首页>代码>spring boot+Mybatis+shiro+bootstrap实现网站后台权限管理系统>/AuthorityManagement/src/main/java/com/cy/pj/common/config/SpringShiroConfig.java
package com.cy.pj.common.config; import java.util.LinkedHashMap; import org.apache.shiro.cache.CacheManager; import org.apache.shiro.cache.MemoryConstrainedCacheManager; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.realm.Realm; 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.CookieRememberMeManager; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.web.servlet.SimpleCookie; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Configuration 注解描述的类为一个配置对象,此对象也会交给spring管理 * */ @Configuration public class SpringShiroConfig { /** * 配置SecurityManager对象(shiro核心安全管理器对象) * * @return */ @Bean public SecurityManager securityManager(Realm realm, CacheManager cacheManager, CookieRememberMeManager rememberManager) { DefaultWebSecurityManager sManager = new DefaultWebSecurityManager(); sManager.setRealm(realm); sManager.setCacheManager(cacheManager); sManager.setRememberMeManager(rememberManager); return sManager; } //=========== 认证配置 =============== /** * 配置ShiroFilterFactoryBean对象, 通过此对象创建过滤器工厂,并指定过滤规则 * * @param securityManager * @return */ @Bean public ShiroFilterFactoryBean shiroFilterFactory(SecurityManager securityManager) { ShiroFilterFactoryBean sfBean = new ShiroFilterFactoryBean(); sfBean.setSecurityManager(securityManager); sfBean.setLoginUrl("/doLoginUI"); // 定义map指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问) LinkedHashMap<String, String> map = new LinkedHashMap<>(); // 静态资源允许匿名访问:"anon" map.put("/bower_components/**", "anon"); map.put("/build/**", "anon"); map.put("/dist/**", "anon"); map.put("/plugins/**", "anon"); map.put("/user/doLogin", "anon"); map.put("/doLogout", "logout"); // 除了匿名访问的资源,其它都要认证("authc")后访问 // map.put("/**","authc"); map.put("/**","user");// 记住我时将authc改为user sfBean.setFilterChainDefinitionMap(map); return sfBean; } //=========== 授权配置 =============== /** * 配置bean对象的生命周期管理。 * spring框架管理此对象时,会基于此对象管理shiro框架中相关api对象的生命周期 * * @return */ @Bean public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } /** * 配置advisor对象,shiro框架底层会通过此对象的matchs方法返回值决定是否创建代理对象,进行权限控制。 * * @param securityManager * @return */ @Bean public AuthorizationAttributeSourceAdvisor newAuthorizationAttributeSourceAdvisor( @Autowired SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor; } //=========== 缓存配置 =============== /** * 配置缓存Bean对象 * @return */ @Bean public CacheManager shiroCacheManager(){ return new MemoryConstrainedCacheManager(); } //=========== 会话配置 =============== /** * 记住我 * @return */ @Bean public CookieRememberMeManager rememberMeManager() { CookieRememberMeManager cManager= new CookieRememberMeManager(); SimpleCookie cookie=new SimpleCookie("rememberMe"); cookie.setMaxAge(10*60); cManager.setCookie(cookie); return cManager; } }
最近下载更多
sunlzh888888 LV29
9月20日
shuangfu LV25
2023年10月19日
tyyeng LV18
2023年8月1日
zdh3907 LV15
2022年11月10日
wuying8208 LV15
2022年10月31日
刘亦菲9527 LV15
2022年8月2日
哆啦A梦伴我同行 LV10
2021年12月1日
xukimi1983 LV2
2021年11月15日
尹恒yingying LV18
2021年10月13日
go_away15 LV7
2021年9月26日
最近浏览更多
bluerstar LV1
10月23日
sunlzh888888 LV29
9月20日
TY0165 LV20
6月23日
llllllK LV5
5月13日
1941549176 LV4
4月29日
13521878735 LV3
3月27日
做自己的太阳 LV11
2月1日
xuweiwowzy LV5
1月14日
WBelong LV8
2023年12月27日
black8angel LV4
2023年12月22日