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)测试
输入账号密码进行登录:
在15s内不进行登录,直接访问index页面,可以正常进入index页面,登录状态为已登录:
15s后直接访问index页面,index页面的显示是未登录: