我正在尝试 - 使用JSF 2.0 - 以一种巧妙的方式实现登录/记住我/注销管理.由于传统<form action="j_security_check" ...方式缺乏灵活性,我决定采用不同的路径,但我发现了一个问题.
声明性安全正确地通过设置无论是在应用服务器<security-domain>和在web.xml中通过<security-constraint>,<login-config>和<form-login-page>.
登录页面:
<h:form id="loginForm">
<h:panelGrid columns="2" cellspacing="5">
<h:outputText value="Username" />
<h:inputText value="#{loginBean.username}" />
<h:outputText value="Password:" />
<h:inputText value="#{loginBean.password}" />
<h:outputLabel value=""/>
<h:commandButton value="Login" action="#{loginBean.login}" />
</h:panelGrid>
</h:form>
Run Code Online (Sandbox Code Playgroud)
简单的LoginBean#login():
public String login( )
{
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance( ).getExternalContext( ).getRequest( );
try {
request.login( username, password );
}
catch ( ServletException e ) {
FacesContext.getCurrentInstance().addMessage( "Unknown login...
return null;
}
return "i_dont_know_where_you_were_going";
} …Run Code Online (Sandbox Code Playgroud)