shiroConfig配置

安全管理器設置

/**
 * shiro 安全管理器設置
 * @return SecurityManager
 */
@Bean
public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        List<Realm> realms = new ArrayList<>(  );
        realms.add( wxRealm() );
        realms.add( userRealm() );
        //設置securityManager 的 realm組.
        securityManager.setRealms( realms );
        //設置session管理器
        securityManager.setSessionManager(sessionManager());
        //自定義的模塊化領域認證(cs)
        ModularRealmAuthenticator authenticator = new WxModularRealmAuthenticator();
        /*
         * 設置 authenticator中的 realm 組
         * 注意,這的設置 realm 和前面 securityManager 設置realm沒有關係
         * 兩邊都須要進行設置,這邊的用於登陸的校驗, securityManager 中的暫時不肯定
         */
        authenticator.setRealms( realms );
        securityManager.setAuthenticator( authenticator );
        return securityManager;

session管理器

/**
 * shiro session管理器
 * 自定義了獲取session的方式
 */
@Bean
public DefaultWebSessionManager sessionManager() {
    //使用自定義的session管理器
    DefaultWebSessionManager sessionManager = new WxSessionManager();
    sessionManager.setGlobalSessionTimeout(tomcatTimeout * 1000);
    sessionManager.setSessionDAO(sessionDAO());
    Collection<SessionListener> listeners = new ArrayList<SessionListener>();
    listeners.add(new BDSessionListener());
    sessionManager.setSessionListeners(listeners);
    return sessionManager;
}

shiro攔截器

/**
 * shiro攔截器, 設置攔截規則
 * @param securityManager  安全管理器
 * @return shiroFilterFactoryBean
 */
@Bean
ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    shiroFilterFactoryBean.setSecurityManager(securityManager);
    shiroFilterFactoryBean.setLoginUrl("/login");
    shiroFilterFactoryBean.setSuccessUrl("/index");
    shiroFilterFactoryBean.setUnauthorizedUrl("/403");
    LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
    filterChainDefinitionMap.put("/home/**", "anon");
    filterChainDefinitionMap.put("/login","anon");
    filterChainDefinitionMap.put("/wxLogin","anon");
    filterChainDefinitionMap.put("/css/**", "anon");
    filterChainDefinitionMap.put("/js/**", "anon");
    filterChainDefinitionMap.put("/fonts/**", "anon");
    filterChainDefinitionMap.put("/img/**", "anon");
    filterChainDefinitionMap.put("/docs/**", "anon");
    filterChainDefinitionMap.put("/druid/**", "anon");
    filterChainDefinitionMap.put("/upload/**", "anon");
    filterChainDefinitionMap.put("/files/**", "anon");
    filterChainDefinitionMap.put("/logout", "logout");
    filterChainDefinitionMap.put("/", "anon");
    filterChainDefinitionMap.put("/blog", "anon");
    filterChainDefinitionMap.put("/blog/open/**", "anon");
    filterChainDefinitionMap.put("/**", "authc");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
    return shiroFilterFactoryBean;
}

開啓shiro aop註解支持

/**
 * 開啓shiro aop註解支持。
 * 進行註解權限校驗時須要使用代理方式;
 * 因此須要開啓代碼支持;
 *
 * @param securityManager  shiro 安全管理器
 * @return AuthorizationAttributeSourceAdvisor
 */
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
        return authorizationAttributeSourceAdvisor;
}
相關文章
相關標籤/搜索