0

我有:

  1. Netbeans 7.2 中的 Java EE Web 应用程序项目。Shiro-Web 已安装并使用 INI 文件中的标准设置运行良好:用户会自动重定向到标准 login.jsp 页面,在那里他们可以毫无问题地登录。

我想:

  1. 创建自定义登录页面 login.xhtml,使用 PrimeFaces 标记进行注释,其中登录过程由支持 bean 处理。

我需要:

  1. 了解需要在此登录 bean 中执行的步骤。目前,我已经实现了一个工作领域,并且能够对用户进行身份验证:

    UsernamePasswordToken currentUserToken = 
       new UsernamePasswordToken(userEmail, userPassword);
    
    try {
        SecurityUtils.getSubject().login(currentUserToken);
    }
    catch(UnknownAccountException uae) {
    
        // TODO: Notify user that no such account exists
    }
    catch(IncorrectCredentialsException ice) {
        // TODO: Notify user that login attempt failed due to bad credentials
    }
    
    // TODO: How to set up user session an everything else, if login succeeded?
    

    但是,我需要采取哪些额外步骤来确保用户会话(以及其他所有内容)也正确设置?我想以相同的状态结束,就好像我使用了标准的 Shiro 登录功能(会话设置、适当的设置设置等)。

  2. 最终,了解如何配置 Shiro NOT 过滤掉登录页面中的 JSF 标签。目前,呈现默认为标准 HTML,所有图形好东西都消失了。

4

1 回答 1

1

JSF 处理您的 DefaultWebEnvironment,因此您需要扩展 EnvironmentLoadListener 并将您的领域添加到其中。

public class CdiEnvironmentLoaderListener extends EnvironmentLoaderListener {

    //this is your implementation that extends Authorizing Realm
    ShiroRealm shiroRealm = null; 

    @Override
    protected WebEnvironment createEnvironment(ServletContext sc) {
        WebEnvironment environment = super.createEnvironment(sc);
        shiroRealm = new ShiroRealm();

        RealmSecurityManager rsm = (RealmSecurityManager) environment
            .getSecurityManager();

        HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();
        matcher.setHashAlgorithmName(Sha512Hash.ALGORITHM_NAME);

        shiroRealm.setCredentialsMatcher(matcher);

        rsm.setRealm(shiroRealm);

        ((DefaultWebEnvironment) environment).setSecurityManager(rsm);

        return environment;
    }
}

在您的 web.xml 中添加自定义侦听器,以及来自 Web 示例的默认过滤器和过滤器映射。

<listener>
    <listener-class>com.company.security.CdiEnvironmentLoaderListener</listener-class>
</listener>

使用自定义 JSF 2.0 标记库。在这里找到 http://deluan.github.com/shiro-faces/

来源:

Apache Shiro“使用 JSF 2.0”!进展如何?

http://shiro-user.582556.n2.nabble.com/Shiro-in-CDI-JPA2-JSF2-project-td7577437.html

于 2012-10-07T18:25:23.287 回答