|
|
|
@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
|
|
|
|
import com.ruoyi.framework.shiro.realm.UserRealm;
|
|
|
|
|
import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
|
|
|
|
|
import com.ruoyi.framework.shiro.session.OnlineSessionFactory;
|
|
|
|
@ -47,10 +48,6 @@ public class ShiroConfig
|
|
|
|
|
@Value("${shiro.session.expireTime}")
|
|
|
|
|
private int expireTime;
|
|
|
|
|
|
|
|
|
|
// 相隔多久检查一次session的有效性,单位毫秒,默认就是10分钟
|
|
|
|
|
@Value("${shiro.session.validationInterval}")
|
|
|
|
|
private int validationInterval;
|
|
|
|
|
|
|
|
|
|
// 验证码开关
|
|
|
|
|
@Value("${shiro.user.captchaEnabled}")
|
|
|
|
|
private boolean captchaEnabled;
|
|
|
|
@ -159,44 +156,6 @@ public class ShiroConfig
|
|
|
|
|
return sessionFactory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 自定义sessionFactory调度器
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public SpringSessionValidationScheduler sessionValidationScheduler()
|
|
|
|
|
{
|
|
|
|
|
SpringSessionValidationScheduler sessionValidationScheduler = new SpringSessionValidationScheduler();
|
|
|
|
|
// 相隔多久检查一次session的有效性,单位毫秒,默认就是10分钟
|
|
|
|
|
sessionValidationScheduler.setSessionValidationInterval(validationInterval * 60 * 1000);
|
|
|
|
|
// 设置会话验证调度器进行会话验证时的会话管理器
|
|
|
|
|
sessionValidationScheduler.setSessionManager(sessionValidationManager());
|
|
|
|
|
return sessionValidationScheduler;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 会话管理器
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public OnlineWebSessionManager sessionValidationManager()
|
|
|
|
|
{
|
|
|
|
|
OnlineWebSessionManager manager = new OnlineWebSessionManager();
|
|
|
|
|
// 加入缓存管理器
|
|
|
|
|
manager.setCacheManager(getEhCacheManager());
|
|
|
|
|
// 删除过期的session
|
|
|
|
|
manager.setDeleteInvalidSessions(true);
|
|
|
|
|
// 设置全局session超时时间
|
|
|
|
|
manager.setGlobalSessionTimeout(expireTime * 60 * 1000);
|
|
|
|
|
// 去掉 JSESSIONID
|
|
|
|
|
manager.setSessionIdUrlRewritingEnabled(false);
|
|
|
|
|
// 是否定时检查session
|
|
|
|
|
manager.setSessionValidationSchedulerEnabled(true);
|
|
|
|
|
// 自定义SessionDao
|
|
|
|
|
manager.setSessionDAO(sessionDAO());
|
|
|
|
|
// 自定义sessionFactory
|
|
|
|
|
manager.setSessionFactory(sessionFactory());
|
|
|
|
|
return manager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 会话管理器
|
|
|
|
|
*/
|
|
|
|
@ -213,7 +172,7 @@ public class ShiroConfig
|
|
|
|
|
// 去掉 JSESSIONID
|
|
|
|
|
manager.setSessionIdUrlRewritingEnabled(false);
|
|
|
|
|
// 定义要使用的无效的Session定时调度器
|
|
|
|
|
manager.setSessionValidationScheduler(sessionValidationScheduler());
|
|
|
|
|
manager.setSessionValidationScheduler(SpringUtils.getBean(SpringSessionValidationScheduler.class));
|
|
|
|
|
// 是否定时检查session
|
|
|
|
|
manager.setSessionValidationSchedulerEnabled(true);
|
|
|
|
|
// 自定义SessionDao
|
|
|
|
@ -227,7 +186,7 @@ public class ShiroConfig
|
|
|
|
|
* 安全管理器
|
|
|
|
|
*/
|
|
|
|
|
@Bean
|
|
|
|
|
public SecurityManager securityManager(UserRealm userRealm)
|
|
|
|
|
public SecurityManager securityManager(UserRealm userRealm, SpringSessionValidationScheduler springSessionValidationScheduler)
|
|
|
|
|
{
|
|
|
|
|
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
|
|
|
// 设置realm.
|
|
|
|
|