本文实例为大家分享了Shiro中科院微服务化及前后端完全分离,供大家参考,具体内容如下
shiro +中科院微服务化笔记
<强> 1。弹簧引导配置强>
有如下两个配置文件:ShiroBaseConfig.java
进口lombok.extern.log4j.Log4j; 进口org.apache.shiro.cache.CacheManager; 进口org.apache.shiro.cache.MemoryConstrainedCacheManager; 进口org.apache.shiro.cas.CasFilter; 进口org.apache.shiro.codec.Base64; 进口org.apache.shiro.session.mgt.eis.MemorySessionDAO; 进口org.apache.shiro.web.mgt.CookieRememberMeManager; 进口org.apache.shiro.web.servlet.SimpleCookie; 进口org.springframework.beans.factory.annotation.Value; 进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration;/* * * & lt; p> *描述:shiro权限管理模块相依 * * @author Dean.Hwang * @date 17/5/18 */@ configuration @Log4j 公开课ShiroBaseConfiguration { @ value (" $ {cas.server.url.prefix} ") 私人字符串casPrefix; @ value (" $ {cas.service} ") 私人字符串casService;/* * *会话饼干模板 * * @return */@ bean 公共SimpleCookie sessionIdCookie () { SimpleCookie SimpleCookie=new SimpleCookie (sid); simpleCookie.setHttpOnly(真正的); simpleCookie.setMaxAge (1800000); 返回simpleCookie; }/* * *会话饼干模板 * * @return */@ bean 公共SimpleCookie rememberCookie () { SimpleCookie SimpleCookie=new SimpleCookie (“rememberMe”); simpleCookie.setHttpOnly(真正的); simpleCookie.setMaxAge(2592000);//30天 返回simpleCookie; }/* * * rememberMe管理器 * * @return */@ bean 公共CookieRememberMeManager rememberMeManager (SimpleCookie rememberCookie) { CookieRememberMeManager CookieRememberMeManager=new CookieRememberMeManager (); cookieRememberMeManager.setCipherKey (Base64.decode (" "));//rememberMe饼干加密的密钥建议每个项目都不一样默认AES算法密钥长度(128 256 512位) cookieRememberMeManager.setCookie (rememberCookie); 返回cookieRememberMeManager; }/* * *会话刀 * * @return */@ bean 公共MemorySessionDAO sessionDAO () { 返回新MemorySessionDAO (); } @ bean 公共CacheManager shiroCacheManager () { 返回新MemoryConstrainedCacheManager (); } @ bean 公共KryCasRealm casRealm (CacheManager shiroCacheManager) { 返回新KryCasRealm (casPrefix casService shiroCacheManager); } @ bean 公共CasFilter CasFilter () { CasFilter CasFilter=new CasFilter (); casFilter.setEnabled(真正的); casFilter.setName (“casFilter”); casFilter.setFailureUrl(“/权力/casFailure”); 返回casFilter; } }
下面ShiroManagerConfiguration。java文件
进口org.apache.shiro.cache.CacheManager; 进口org.apache.shiro.cas.CasFilter; 进口org.apache.shiro.cas.CasSubjectFactory; 进口org.apache.shiro.spring.web.ShiroFilterFactoryBean; 进口org.apache.shiro.web.filter.authc.LogoutFilter; 进口org.apache.shiro.web.mgt.CookieRememberMeManager; 进口org.apache.shiro.web.mgt.DefaultWebSecurityManager; 进口org.apache.shiro.web.session.mgt.ServletContainerSessionManager; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.beans.factory.annotation.Value; 进口org.springframework.beans.factory.config.MethodInvokingFactoryBean; 进口org.springframework.boot.autoconfigure.AutoConfigureAfter; 进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration; 进口javax.servlet.Filter; 进口java.util.HashMap; 进口java.util.Map;/* * * & lt;/p> * & lt; p> *版权:版权(c) 2015 * & lt;/p> * & lt; p> * & lt;/p> * * @author Dean.Hwang * @date 17/5/18 */@ configuration @AutoConfigureAfter ( {ShiroBaseConfiguration.class} ) 公开课ShiroManagerConfiguration { @ autowired 私人KryCasRealm KryCasRealm; @ autowired 私人CacheManager shiroCacheManager; @ autowired 私人CookieRememberMeManager rememberMeManager; @ value (" $ {cas.server.login.url} ") 私人字符串loginUrl; @ value (" $ {cas.client.url.prefix} ") 私人字符串urlPrefix; @ autowired 私人CasFilter CasFilter; @ value (" $ {cas.server.logout.url} ") 私人字符串logoutUrl; @ value (" $ {cas.client.index.url} ") 私人字符串indexUrl; @ bean 公共DefaultWebSecurityManager securityManager () { DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager (); securityManager.setRealm (kryCasRealm); securityManager。setSessionManager(新ServletContainerSessionManager ()); securityManager.setCacheManager (shiroCacheManager); securityManager.setRememberMeManager (rememberMeManager); securityManager。setSubjectFactory(新CasSubjectFactory ()); 返回securityManager; }/* * *相当于调用SecurityUtils.setSecurityManager (securityManager) * * @param securityManager * @return */@ bean 公共MethodInvokingFactoryBean MethodInvokingFactoryBean (DefaultWebSecurityManager securityManager) { MethodInvokingFactoryBean bean=new MethodInvokingFactoryBean (); bean.setStaticMethod (“org.apache.shiro.SecurityUtils.setSecurityManager”); bean。setArguments(新对象[]{securityManager}); 返回bean; } @ bean 公共ShiroFilterFactoryBean shiroFilter (DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean factoryBean=new ShiroFilterFactoryBean (); factoryBean.setSecurityManager (securityManager); factoryBean。null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullShiro +中科院微服务化及前后端完全分离