4

Primefacesj_security_checkを実装するには? ログインにJAASを使用する場合、 JSPでは通常、ログイン フォームは次のようになります。

<form action="j_security_check" method="POST">
   Username:<input type="text" name="j_username"><br>
   Password:<input type="password" name="j_password">
   <input type="submit" value="Login">
</form>

しかし、どうやって JSF や Primefaces に実装するのでしょうか!

  • 行動はどうなる
  • ID や名前を削除するにはどうすればよいですかformId:componentId
  • また、p:commandButtonデフォルトでPrimefacesでajax化されているため、ajax以外の方法でフォームを送信するにはどうすればよいですか

PrimefacesでJAASフォーム認証を実装する必要があり、ここでその解決策を共有しています。誰かにとって便利になるかもしれません。

4

2 に答える 2

18

解決策は非常に簡単です。

  • h:formwithを定義してprependId="false"、コンポーネントの ID または名前を として生成しないようにする必要がありますformId:componentId
  • action="j_security_check"h:formとして定義する必要がありますonsubmit="document.getElementById('login').action='j_security_check';"
  • ajaxの属性をp:commandButtontoに設定しfalseて、フォームが ajax 方式で送信されないようにします。

それでおしまい。上記のフォームに置き換えることができるログインフォームの完全なコードは次のとおりです。

<h:form id="login" onsubmit="document.getElementById('login').action='j_security_check';" prependId="false">
    <h:panelGrid columns="2">
        <p:outputLabel for="j_username" value="Username" />
        <p:inputText id="j_username" name="j_username" />            
        <p:outputLabel for="j_password" value="Password" />
        <p:password id="j_password" name="j_password"/>
        <p:commandButton id="submit" value="Login" ajax="false"/>
    </h:panelGrid>
</h:form>

ありがとう。

于 2012-11-29T06:47:24.883 に答える
2

(Primefaces 5 で) 動作するコードがあります (p:inputText と p:password から name 属性を削除し、BalusC 部分で提案されたものを削除しました):

<h:form id="login" onsubmit="action='j_security_check';" prependId="false">
    <h:panelGrid columns="2">
        <p:outputLabel for="j_username" value="Username" />
        <p:inputText id="j_username" />            
        <p:outputLabel for="j_password" value="Password" />
        <p:password id="j_password" />
        <p:commandButton id="submit" value="Login" ajax="false"/>
    </h:panelGrid>
</h:form> 
于 2015-01-22T22:24:50.803 に答える