Shiro +中科院微服务化及前后端完全分离

  

本文实例为大家分享了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   null

Shiro +中科院微服务化及前后端完全分离