1、概念

  • Shiro进行认证和授权是基于session实现的,Shiro包含了对session的管理
  • 如果我们需要对session进行管理,需要自定义session管理器,并将自定义的session管理器设置给安全管理器

 

2、session管理

(1)在配置类中配置session管理器,并将其设置给安全管理器

 @Bean
    public DefaultWebSessionManager getDefaultWebSessionManager(){
        DefaultWebSessionManager defaultWebSessionManager=new DefaultWebSessionManager();
        defaultWebSessionManager.setGlobalSessionTimeout(15*1000);//15s
        return defaultWebSessionManager;
    }

注意:过期时间的单位是ms

(2)在安全管理其中设置session管理器

@Bean
    public DefaultWebSecurityManager getDefaultWebSecurityManager(MyRealm myRealm,EhCacheManager ehCacheManager) {
        DefaultWebSecurityManager defaultSecurityManager = new DefaultWebSecurityManager();
        defaultSecurityManager.setRealm(myRealm);//SecurityManager完成校验需要realm
        defaultSecurityManager.setCacheManager(ehCacheManager);
        defaultSecurityManager.setSessionManager(getDefaultWebSessionManager());
        return defaultSecurityManager;
    }

(3)测试

输入账号密码进行登录:

shiro:session管理_直接访问

 在15s内不进行登录,直接访问index页面,可以正常进入index页面,登录状态为已登录:

shiro:session管理_直接访问_02

15s后直接访问index页面,index页面的显示是未登录:

shiro:session管理_安全管理_03

 

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛