2

ユーザーが直接ナビゲートするときに非常にうまく機能するJSFログインページがあります。

ただし、ユーザーが最初にログオンせずに保護されたページにアクセスしようとすると、コンテナーはこれを正しくインターセプトし、ログオンページにスローします。ただし、ログオンページはJSFであるため、問題があります。ユーザーに送信されるのは、FacesServletによって完全に処理されていない生のJSFページです。

スニペットの例-ログオンせずに保護されたページにアクセスした後、ブラウザに送信されます。

<ui:define name="body">
    <p:growl id="growl" showDetail="true" sticky="true"  /> 
    <div class="mytext">Please login to the application...</div>

    <form method="POST" action="j_security_check">
        <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td align="right">Username:&nbsp;</td>
                <td>
                    <input type="text" name="j_username"/>
                </td>
            </tr>
            <tr>
                <td align="right">Password:&nbsp;</td>
                <td>
                    <input type="password" name="j_password"/>
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <input type="submit" value="Login"/>
                 </td>
             </tr>
            </table>
     </form>
 </ui:define>

単に生のJSFファイルを返すのではなく、FacesServletプロセッサを介してコンテナに応答を強制的にレンダリングさせる方法はありますか?

4

1 に答える 1

4

の URL を<form-login-page>の URL パターンに一致するように変更するか、ブラウザのアドレス バーの URL を意図的に変更してエンドユーザーがどのページの生の JSF ソース コードも表示されないようFacesServletに、 の URL パターンを に変更するFacesServletことをお勧めします。*.xhtml

于 2012-06-08T02:39:59.573 に答える