jsf2.0フォームを使用してユーザーを認証しようとしています。また、UserPrincipalsを作成したいと思います。HttpServletRequest.loginメソッドを使用して、新しいUserPrincipalを作成できると思いました。 http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html
私がしたことは:
フォーミュラ:
<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を作成する方法の何が問題になっていますか?
一番