j_security_check with Primefaces

后端 未结 2 573
再見小時候
再見小時候 2021-02-10 23:25

How to implement j_security_check with Primefaces? Normally in JSP if you want to use JAAS for login, the log

相关标签:
2条回答
  • 2021-02-10 23:54

    There is working (with Primefaces 5) code (removed name attributes from p:inputText and p:password, removed suggested by BalusC part):

    <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> 
    
    0 讨论(0)
  • 2021-02-10 23:59

    The solution is pretty straightforward.

    • You need to define the h:form with prependId="false", so that it will not generate id or name of the component as formId:componentId.
    • You need to defined the action="j_security_check" in the h:form as onsubmit="document.getElementById('login').action='j_security_check';"
    • Set the ajax attribute of the p:commandButton to false, so that the form doesn't get submitted in ajax way.

    That's it. Here is the complete code of the login form which can be replaced by the aforesaid form:

    <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>
    

    Thanks.

    0 讨论(0)
提交回复
热议问题