如何在Java EE 6中实现认证机制

Zec*_*eck 12 java security authentication java-ee java-ee-6

我正在尝试学习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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

  1. request.login函数如何检查名称和密码?它不知道用户实体?
  2. 如果不是正确的方法.如何实现标准认证机制

最后,谢谢你的建议,我需要一个非常好的教程或建议.

Pas*_*ent 15

request.login功能如何检查名称和密码?它不知道用户实体?

request.login允许执行编程安全和验证在所提供的用户名和口令密码验证境界通过配置用于ServletContext的Web容器登录机制使用.

换句话说,它将身份验证检查委托给容器,并且此检查是针对webapp的安全领域完成的.这是基于FORM的身份验证的一个非常好的替代方法.

验证没有表 已经有一个不错的截屏显示在操作此功能.如果您不想使用文件领域而是使用JDBC领域,请查看此博客文章.

也可以看看