第一种:在shiroConfig中配置
@Bean(name = "shiroSessionManager") public DefaultWebSessionManager sessionManager(){ DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); // 设置时间600s sessionManager.setGlobalSessionTimeout(600000L); return sessionManager; } @Bean(name = "securityManager") @ConditionalOnMissingBean public DefaultSecurityManager securityManager() { DefaultSecurityManager sm = new DefaultWebSecurityManager(); sm.setCacheManager(cacheManager()); //第一种设置session时间 sm.setSessionManager(sessionManager()); return sm; }
第二种:利用shiro自带工具类,例如在跳转主页前加判断
@RequestMapping(value = { "/","/index" }, method = RequestMethod.GET) public String index() { 第二种设置session时间 if(SecurityUtils.getSubject()!=null) { SecurityUtils.getSubject().getSession().setTimeout(1800000L); } return "index"; }
测试方法
System.out.println("Session有效时间"+request.getSession().getMaxInactiveInterval()); System.out.println("shiro-Session有效时间"+SecurityUtils.getSubject().getSession().getTimeout());