springboot 통합 shiro 의 Shiro Config 설정 클래스

5452 단어 shiro 프레임

shiro 디렉토리:
  • springboot boot 통합 shiro 의 shiroconfig 설정 파일
  • springboot boot 통합 shiro 의 Authentication 상세 설명
  • shiro 가방 가 져 오기:
    
        org.apache.shiro
        shiro-spring
        1.3.2
    

    ShiroConfig 설정 클래스
    
    import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
    import org.apache.shiro.mgt.SecurityManager;
    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.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.DependsOn;
    import javax.servlet.Filter;
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    /**
     *   :
     *
     * @author caojing
     * @create 2019-01-27-13:38
     */
    @Configuration
    public class ShiroConfig {
            private static final  Logger log = LoggerFactory.getLogger(ShiroConfig.class);
        @Bean(name = "shiroFilter")
        public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
            ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
            shiroFilterFactoryBean.setSecurityManager(securityManager);
            //                 
            //          ,         
    //        shiroFilterFactoryBean.setLoginUrl("/login");
    //        shiroFilterFactoryBean.setUnauthorizedUrl("/notRole");
    
            //               JSON      ,
            Map filterMap = new LinkedHashMap<>();
            filterMap.put("authc", new AjaxPermissionsAuthorizationFilter());
            shiroFilterFactoryBean.setFilters(filterMap);
    
            Map filterChainDefinitionMap = new LinkedHashMap<>();
            // 
            filterChainDefinitionMap.put("/webjars/**", "anon");
            filterChainDefinitionMap.put("/login2", "anon");
            filterChainDefinitionMap.put("/login", "anon");
            filterChainDefinitionMap.put("/", "anon");
            filterChainDefinitionMap.put("/front/**", "anon");
            filterChainDefinitionMap.put("/api/**", "anon");
    
            filterChainDefinitionMap.put("/admin/**", "authc");
            filterChainDefinitionMap.put("/user/**", "authc");
            //                   ,        url              
            filterChainDefinitionMap.put("/**", "authc");
            shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
            return shiroFilterFactoryBean;
        }
        @Bean
        public SecurityManager securityManager() {
            DefaultWebSecurityManager defaultSecurityManager = new DefaultWebSecurityManager();
            defaultSecurityManager.setRealm(customRealm());
            return defaultSecurityManager;
        }
        @Bean
        public CustomRealm customRealm() {
            CustomRealm customRealm = new CustomRealm();
            //   realm,  credentialsMatcher          
            customRealm.setCredentialsMatcher(hashedCredentialsMatcher());
            customRealm.setCachingEnabled(false);
            return customRealm;
        }
        @Bean
        public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
            return new LifecycleBeanPostProcessor();
        }
        /**
         * *
         *   Shiro   ( @RequiresRoles,@RequiresPermissions),   SpringAOP    Shiro    ,             
         *       bean(DefaultAdvisorAutoProxyCreator(  ) AuthorizationAttributeSourceAdvisor)       
         * * @return
         */
        @Bean
        @DependsOn({"lifecycleBeanPostProcessor"})
        public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
            DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
            advisorAutoProxyCreator.setProxyTargetClass(true);
            return advisorAutoProxyCreator;
        }
        @Bean
        public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {
            AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
            authorizationAttributeSourceAdvisor.setSecurityManager(securityManager());
            return authorizationAttributeSourceAdvisor;
        }
    
    
        /**
         *                   。
         * shiro              
         * @return
         */
        @Bean(name = "credentialsMatcher")
        public HashedCredentialsMatcher hashedCredentialsMatcher() {
            HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
            //     :    MD5  ;
            log.info("MD5  ");
            hashedCredentialsMatcher.setHashAlgorithmName("md5");
            //      ,      ,    md5(md5(""));
            hashedCredentialsMatcher.setHashIterations(2);
            // storedCredentialsHexEncoded   true,            Hex  ;false  Base64  
            hashedCredentialsMatcher.setStoredCredentialsHexEncoded(true);
            return hashedCredentialsMatcher;
        }
    }
    

    댓 글 토론 환영 합 니 다.
    github 주소: shiro

    좋은 웹페이지 즐겨찾기