jsf 2.0 양식을 사용하여 사용자를 인증하려고합니다. 또한 UserPrincipals를 만들고 싶습니다. HttpServletRequest.login 메서드를 사용하여 새로운 UserPrincipal을 만들 수 있다고 생각했습니다. 내가 무슨 짓을 http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.htmlJSF 2.0 로그인 + 사용자 기본 설정
은 다음과 같습니다
포뮬러 :
<h:form>
<h:outputLabel value="Name" for="name"/>
<h:inputText id="name" value="#{userMng.user.name }"/>
<br/>
<h:outputLabel value="Passwort" for="pw"/>
<h:inputSecret id="pw" value="#{userMng.user.password }"/>
<br/>
<h:commandButton type="submit" value="Submit" action="#{ userMng.login }"/>
</h:form>
UserMng (sessionscoped) : 로그인 방법 :
public String login() {
String ret = "error";
if (user.getName().equals("test") && user.getPassword().equals("test")) {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
try {
request.login(this.user.getName(), this.user.getPassword());
LOGGER.info("Login the user");
ret = "success";
// this.user = userDAO.find(this.username, this.password);
} catch (ServletException e) {
// Handle unknown username/password in request.login().
context.addMessage(null, new FacesMessage("Unknown login"));
}
}
LOGGER.info(ret);
return ret;
}
하지만 난 UserPrincipal.getName를 인쇄 할 때 로그인 한 다음 전화 할 때 NullpointerException이 발생합니다.
request.getUserPrincipal().getName();
성공적인 로그인 후에 내 코드 또는 내 UserPrincipal을 만드는 방법이 잘못 되었습니까?
내가 RET 할 때 = "성공 얼굴-리디렉션 = 사실?"; 내 탐색 규칙이 작동하지 않습니다. JSF가 성공 페이지로 리디렉션하지 않습니다 – veote
또한 로그인 메소드가 새 사용자를 생성하지 않는 것으로 보입니다. UserPrincipal도 request.login 후에 내 로그인 메소드에서 인쇄하려고 할 때 null 객체입니다 – veote
아직도 구식 XML 탐색 규칙을 사용하고 있습니까? 거기에' '을 넣거나 viewId? faces-redirect = true "'와 같이'"viewId "'와 같은 암시 적 탐색으로 모든 탐색 규칙을 바꿉니다. –
BalusC