我正在尝试学习Java EE 6,我只是想知道如何在Java EE 6中实现认证机制。
以下是Java EE 6认证示例:
public void login() {
if (account.authenticate(name, password) == null) {
message = "Invalid user name or password!";
} else {
message = " Login successful";
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
try {
request.login(this.name, this.password);
Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
name = principal.getName();
} catch (ServletException e) {
// Handle unknown username/password in request.login().
context.addMessage(null, new FacesMessage("Unknown login"));
}
}
}
我有以下问题:
最后,谢谢你的建议,我需要一个非常好的教程或建议。
答案 0 :(得分:15)
request.login
函数如何检查名称和密码?它不知道用户实体吗?
request.login
允许实现编程安全性,验证为ServletContext配置的Web容器登录机制使用的密码验证领域中提供的用户名和密码。
换句话说,它将身份验证检查委托给容器,并且此检查是针对webapp的安全领域完成的。这是基于FORM的身份验证的非常好的替代方案。
Authentication Without the Form 有一个很好的screencast显示此功能。如果您不想使用文件领域而是使用JDBC领域,请选中this blog post。