Spring+Shiro权限管理 (四) 为Shiro添加RememberMe(记住我)功能

废话少说,进入正题。

 

思路:

1、ApplicationContext.xml中,配置 CookieRememberMeManager (记住我的Cookie管理器);

2、CookieRememberMeManager需要Cookie,我们配置一个Shiro的Cookie实现类 SimpleCookie ;

3、把CookieRememberMeManager配置进Shiro的SecurityManager中。

4、在Subject.login()前,判断是否要记住我。

 

实现步骤:

1、ApplicationContext.xml中 (抽取了我配置文件中的主要部分)

   
        
            
                
            
        

        
        
        
        
        
        
    

    
    
        
    
    
        
        
    

2、Controller中,登录认证那段

        UsernamePasswordToken token = new UsernamePasswordToken(userIdCode, password);
        //是否记住我
        token.setRememberMe(rememberMe);
        try {
            //当调用subject的登入方法时,会跳转到认证的方法上。
            subject.login(token);

        } catch......

3、前端界面新增CheckBox按钮

账号:${userName}
密码:${password}
15天内自动登录

4、需要特别注意的一点:Shiro 拦截器链中,如果页面是authc的话,RememberMe是看不出效果的,所以我们要把需要(一次登录短暂时间内可以重复访问的页面)拦截器等级设为user。

    
    
        

        
        
        
        
        
        

        
        
            
                
                
            
        
        
        
            
                /login = anon 
                /toHome = anon
                /toHome2 = user
                /longpoll = anon
                /druid/** = anon
                /logout = logout
                /admin = roles[admin]
                /toAddUser = perms[add]
                /** = user
                
            
        

    

至此,就好了。

 

总结:

个人觉得,出于安全性考虑,建议不用,或少用。

你可能感兴趣的:(Shiro)