|
|
|
@@ -9,6 +9,7 @@ import org.apache.shiro.spring.LifecycleBeanPostProcessor; |
|
|
|
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; |
|
|
|
import org.apache.shiro.spring.web.ShiroFilterFactoryBean; |
|
|
|
import org.apache.shiro.web.mgt.DefaultWebSecurityManager; |
|
|
|
import org.apache.shiro.web.servlet.SimpleCookie; |
|
|
|
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; |
|
|
|
import org.crazycake.shiro.RedisCacheManager; |
|
|
|
import org.crazycake.shiro.RedisManager; |
|
|
|
@@ -41,8 +42,8 @@ public class ShiroConfig { |
|
|
|
@Value("${spring.redis.expire}") |
|
|
|
private int expire; |
|
|
|
|
|
|
|
@Value("${spring.redis.password}") |
|
|
|
private String password; |
|
|
|
@Value("${spring.redis.password}") |
|
|
|
private String password; |
|
|
|
|
|
|
|
@Bean |
|
|
|
public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { |
|
|
|
@@ -104,7 +105,12 @@ public class ShiroConfig { |
|
|
|
// filterChainDefinitionMap.put(resources.getUrl(),permission); |
|
|
|
// } |
|
|
|
// } |
|
|
|
filterChainDefinitionMap.put("/swagger-ui.html","anon"); |
|
|
|
filterChainDefinitionMap.put("/v2/**","anon"); |
|
|
|
filterChainDefinitionMap.put("/swagger-resources/**","anon"); |
|
|
|
filterChainDefinitionMap.put("/webjars/**","anon"); |
|
|
|
filterChainDefinitionMap.put("/**", "authc"); |
|
|
|
// filterChainDefinitionMap.put("/**", "anon"); |
|
|
|
|
|
|
|
|
|
|
|
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); |
|
|
|
@@ -130,6 +136,8 @@ public class ShiroConfig { |
|
|
|
myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); |
|
|
|
return myShiroRealm; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 凭证匹配器 |
|
|
|
@@ -201,13 +209,53 @@ public class ShiroConfig { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* shiro session的管理 |
|
|
|
* shiro session的管理 |
|
|
|
*/ |
|
|
|
@Bean |
|
|
|
public DefaultWebSessionManager sessionManager() { |
|
|
|
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); |
|
|
|
sessionManager.setSessionDAO(redisSessionDAO()); |
|
|
|
sessionManager.setSessionIdCookie(simpleCookie()); |
|
|
|
return sessionManager; |
|
|
|
} |
|
|
|
|
|
|
|
@Bean |
|
|
|
public SimpleCookie simpleCookie() { |
|
|
|
SimpleCookie simpleCookie = new SimpleCookie("SSIDS"); |
|
|
|
simpleCookie.setDomain(""); |
|
|
|
return simpleCookie; |
|
|
|
} |
|
|
|
|
|
|
|
// @Bean |
|
|
|
// public SimpleCookie rememberMeCookie(){ |
|
|
|
// //System.out.println("ShiroConfiguration.rememberMeCookie()"); |
|
|
|
// //这个参数是cookie的名称,对应前端的checkbox的name = rememberMe |
|
|
|
// SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); |
|
|
|
// //<!-- 记住我cookie生效时间30天 ,单位秒;--> |
|
|
|
// simpleCookie.setMaxAge(60*30); |
|
|
|
// return simpleCookie; |
|
|
|
// } |
|
|
|
|
|
|
|
// @Bean |
|
|
|
// public CookieRememberMeManager rememberMeManager(){ |
|
|
|
// //System.out.println("ShiroConfiguration.rememberMeManager()"); |
|
|
|
// CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); |
|
|
|
// cookieRememberMeManager.setCookie(rememberMeCookie()); |
|
|
|
// //rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位) |
|
|
|
// cookieRememberMeManager.setCipherKey(Base64.decodeBytes("2AvVhdsgUs0FSA3SDFAdag==")); |
|
|
|
// return cookieRememberMeManager; |
|
|
|
// } |
|
|
|
|
|
|
|
// @Bean(name = "securityManager") |
|
|
|
// public DefaultWebSecurityManager defaultWebSecurityManager(MyShiroRealm realm){ |
|
|
|
// DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); |
|
|
|
// //设置realm |
|
|
|
// securityManager.setRealm(realm); |
|
|
|
// //用户授权/认证信息Cache, 采用EhCache缓存 |
|
|
|
// securityManager.setCacheManager(cacheManager()); |
|
|
|
// //注入记住我管理器 |
|
|
|
// securityManager.setRememberMeManager(rememberMeManager()); |
|
|
|
// return securityManager; |
|
|
|
// } |
|
|
|
|
|
|
|
} |