JSF 2.0을 사용하여 로그인/기억/로그 아웃 관리를 깔끔하게 구현하려고합니다. 전통적인 <form action="j_security_check" ...
방식은 유연성이 부족하기 때문에 다른 경로를 따르기로 결정했지만 문제가 발견되었습니다.JSF 2.0을 사용한 사용자 로그인
선언 보안은 응용 프로그램 서버에서 <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>
그리고 간단한 LoginBean 번호 로그인() :
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";
}
모든 것이 잘 작동하지만 성공적으로 로그인 한 후 나는 사용자에게 전달하는 방법을 모른다 원래 요청으로 로그인 페이지는 클라이언트 요청과 "모든"보안 리소스 사이에 자동으로 삽입되므로 작업을 리디렉션 할 위치를 이해해야합니다. request.getRequestURL()
은 도움이되지 않습니다. 아마도 RequestDispatcher#forward()
(요청 URL을 덮어 씀) 개입 때문일 수 있습니다. 이것이 로그인 프로세스를 관리하는 적절한 방법이라고 생각하십니까? 그렇다면 문제에 대한 암시가 있습니까?
고맙습니다.