|
|
@@ -33,14 +33,16 @@ import java.util.Map;
|
|
|
/**
|
|
|
* 权限配置加载
|
|
|
*
|
|
|
- * @author biandan
|
|
|
+ * @author xingxi
|
|
|
*/
|
|
|
@Configuration
|
|
|
-public class ShiroConfig
|
|
|
-{
|
|
|
+public class ShiroConfig {
|
|
|
/**
|
|
|
* Session超时时间,单位为毫秒(默认30分钟)
|
|
|
*/
|
|
|
+ @Value("${spring.redis.expireTime}")
|
|
|
+ private int redisTimeOut;
|
|
|
+
|
|
|
@Value("${shiro.session.expireTime}")
|
|
|
private int expireTime;
|
|
|
|
|
|
@@ -150,8 +152,7 @@ public class ShiroConfig
|
|
|
* Cache Manager (shiro-redis)
|
|
|
*/
|
|
|
@Bean
|
|
|
- public RedisCacheManager redisCacheManager()
|
|
|
- {
|
|
|
+ public RedisCacheManager redisCacheManager() {
|
|
|
RedisCacheManager redisCacheManager = new RedisCacheManager();
|
|
|
redisCacheManager.setRedisManager(redisManager());
|
|
|
redisCacheManager.setPrincipalIdFieldName("userId");
|
|
|
@@ -162,16 +163,14 @@ public class ShiroConfig
|
|
|
* RedisManager (shiro-redis)
|
|
|
*/
|
|
|
@Bean
|
|
|
- public RedisManager redisManager()
|
|
|
- {
|
|
|
+ public RedisManager redisManager() {
|
|
|
RedisManager redisManager = new RedisManager();
|
|
|
redisManager.setHost(redisHost + ":" + redisPort);
|
|
|
redisManager.setDatabase(database);
|
|
|
- if (StringUtils.isNotEmpty(password))
|
|
|
- {
|
|
|
+ if (StringUtils.isNotEmpty(password)) {
|
|
|
redisManager.setPassword(password);
|
|
|
}
|
|
|
- redisManager.setTimeout(expireTime * 60);
|
|
|
+ redisManager.setTimeout(redisTimeOut * 60);
|
|
|
return redisManager;
|
|
|
}
|
|
|
|
|
|
@@ -214,8 +213,7 @@ public class ShiroConfig
|
|
|
* 自定义Realm
|
|
|
*/
|
|
|
@Bean
|
|
|
- public UserRealm userRealm()
|
|
|
- {
|
|
|
+ public UserRealm userRealm() {
|
|
|
UserRealm userRealm = new UserRealm();
|
|
|
userRealm.setAuthorizationCacheName(Constants.SYS_AUTH_CACHE);
|
|
|
userRealm.setCacheManager(redisCacheManager());
|
|
|
@@ -226,11 +224,10 @@ public class ShiroConfig
|
|
|
* RedisSessionDAO (shiro-redis)
|
|
|
*/
|
|
|
@Bean
|
|
|
- public RedisSessionDAO redisSessionDAO()
|
|
|
- {
|
|
|
+ public RedisSessionDAO redisSessionDAO() {
|
|
|
RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
|
|
|
redisSessionDAO.setRedisManager(redisManager());
|
|
|
- redisSessionDAO.setExpire(expireTime * 60);
|
|
|
+ redisSessionDAO.setExpire(redisTimeOut * 60);
|
|
|
return redisSessionDAO;
|
|
|
}
|
|
|
|
|
|
@@ -256,8 +253,7 @@ public class ShiroConfig
|
|
|
* 会话管理器
|
|
|
*/
|
|
|
@Bean
|
|
|
- public SessionManager sessionManager()
|
|
|
- {
|
|
|
+ public SessionManager sessionManager() {
|
|
|
DefaultWebSessionManager manager = new DefaultWebSessionManager();
|
|
|
// 加入缓存管理器
|
|
|
manager.setCacheManager(redisCacheManager());
|
|
|
@@ -274,8 +270,7 @@ public class ShiroConfig
|
|
|
* 安全管理器
|
|
|
*/
|
|
|
@Bean
|
|
|
- public SecurityManager securityManager(UserRealm userRealm)
|
|
|
- {
|
|
|
+ public SecurityManager securityManager(UserRealm userRealm) {
|
|
|
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
|
|
|
// 设置realm.
|
|
|
securityManager.setRealm(userRealm);
|
|
|
@@ -291,8 +286,7 @@ public class ShiroConfig
|
|
|
/**
|
|
|
* 退出过滤器
|
|
|
*/
|
|
|
- public LogoutFilter logoutFilter()
|
|
|
- {
|
|
|
+ public LogoutFilter logoutFilter() {
|
|
|
LogoutFilter logoutFilter = new LogoutFilter();
|
|
|
logoutFilter.setLoginUrl(loginUrl);
|
|
|
logoutFilter.setCacheManager(redisCacheManager());
|
|
|
@@ -303,8 +297,7 @@ public class ShiroConfig
|
|
|
* Shiro过滤器配置
|
|
|
*/
|
|
|
@Bean
|
|
|
- public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager)
|
|
|
- {
|
|
|
+ public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
|
|
|
CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
|
|
|
// Shiro的核心安全接口,这个属性是必须的
|
|
|
shiroFilterFactoryBean.setSecurityManager(securityManager);
|
|
|
@@ -376,8 +369,7 @@ public class ShiroConfig
|
|
|
/**
|
|
|
* 自定义验证码过滤器
|
|
|
*/
|
|
|
- public CaptchaValidateFilter captchaValidateFilter()
|
|
|
- {
|
|
|
+ public CaptchaValidateFilter captchaValidateFilter() {
|
|
|
CaptchaValidateFilter captchaValidateFilter = new CaptchaValidateFilter();
|
|
|
captchaValidateFilter.setCaptchaEnabled(captchaEnabled);
|
|
|
captchaValidateFilter.setCaptchaType(captchaType);
|
|
|
@@ -387,8 +379,7 @@ public class ShiroConfig
|
|
|
/**
|
|
|
* cookie 属性设置
|
|
|
*/
|
|
|
- public SimpleCookie rememberMeCookie()
|
|
|
- {
|
|
|
+ public SimpleCookie rememberMeCookie() {
|
|
|
SimpleCookie cookie = new SimpleCookie("rememberMe");
|
|
|
cookie.setDomain(domain);
|
|
|
cookie.setPath(path);
|
|
|
@@ -400,16 +391,12 @@ public class ShiroConfig
|
|
|
/**
|
|
|
* 记住我
|
|
|
*/
|
|
|
- public CookieRememberMeManager rememberMeManager()
|
|
|
- {
|
|
|
+ public CookieRememberMeManager rememberMeManager() {
|
|
|
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
|
|
|
cookieRememberMeManager.setCookie(rememberMeCookie());
|
|
|
- if (StringUtils.isNotEmpty(cipherKey))
|
|
|
- {
|
|
|
+ if (StringUtils.isNotEmpty(cipherKey)) {
|
|
|
cookieRememberMeManager.setCipherKey(Base64.decode(cipherKey));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ } else {
|
|
|
cookieRememberMeManager.setCipherKey(CipherUtils.generateNewKey(128, "AES").getEncoded());
|
|
|
}
|
|
|
return cookieRememberMeManager;
|
|
|
@@ -418,8 +405,7 @@ public class ShiroConfig
|
|
|
/**
|
|
|
* 同一个用户多设备登录限制
|
|
|
*/
|
|
|
- public KickoutSessionFilter kickoutSessionFilter()
|
|
|
- {
|
|
|
+ public KickoutSessionFilter kickoutSessionFilter() {
|
|
|
KickoutSessionFilter kickoutSessionFilter = new KickoutSessionFilter();
|
|
|
kickoutSessionFilter.setCacheManager(redisCacheManager());
|
|
|
kickoutSessionFilter.setSessionManager(sessionManager());
|
|
|
@@ -436,8 +422,7 @@ public class ShiroConfig
|
|
|
* thymeleaf模板引擎和shiro框架的整合
|
|
|
*/
|
|
|
@Bean
|
|
|
- public ShiroDialect shiroDialect()
|
|
|
- {
|
|
|
+ public ShiroDialect shiroDialect() {
|
|
|
return new ShiroDialect();
|
|
|
}
|
|
|
|
|
|
@@ -445,16 +430,14 @@ public class ShiroConfig
|
|
|
* 开启Shiro注解通知器
|
|
|
*/
|
|
|
@Bean
|
|
|
- public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager)
|
|
|
- {
|
|
|
+ public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
|
|
|
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
|
|
|
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
|
|
|
return authorizationAttributeSourceAdvisor;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
- public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator()
|
|
|
- {
|
|
|
+ public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
|
|
|
DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
|
|
|
defaultAdvisorAutoProxyCreator.setUsePrefix(true);
|
|
|
return defaultAdvisorAutoProxyCreator;
|