栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring boot 集成shiro的配置方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring boot 集成shiro的配置方法

spring boot提供了一个自带的认证框架,同时也提供自定义的javaconfig配置扩展,spring-sercurity同样也是优秀的框架,但是习惯了用apache shiro框架,而且原项目就是集成的shiro框架,到网上找了一下配置方式,没找到完全配置的方法,因此决定自己动手,丰衣足食!

        要在spring boot上集成其他框架,首先要会spring javaconfig方法,利用此方法同样可以配置其他模块,废话少说,开始。。。

        开始前需要导入maven依赖(shiro-web可选):         

   
  org.apache.shiro 
  shiro-core 
  ${shiro.version} 
 
 
  org.apache.shiro 
  shiro-web 
  ${shiro.version} 
 
 
  org.apache.shiro 
  shiro-spring 
  ${shiro.version} 
 
 
  org.apache.shiro 
  shiro-ehcache 
  ${shiro.version} 
 

        原shiro集成spring的配置拿出来,如下:

 
 
Shiro安全配置 来源于: http://shiro.apache.org/spring.html 
 
 
 
 
 
 
 
 
 
 
  
 
 
 
 
 
/sa/** = authc 
/** = anon 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

好多类啊,没办法一个一个配置,javaconfig文件如下:

import java.util.linkedHashMap; 
import java.util.Map; 
import org.apache.shiro.cache.ehcache.EhCacheManager; 
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.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
@Configuration 
public class ShiroConfiguration { 
  private static Map filterChainDefinitionMap = new linkedHashMap(); 
  @Bean(name = "ShiroRealmImpl") 
  public ShiroRealmImpl getShiroRealm() { 
    return new ShiroRealmImpl(); 
  } 
  @Bean(name = "shiroEhcacheManager") 
  public EhCacheManager getEhCacheManager() { 
    EhCacheManager em = new EhCacheManager(); 
    em.setCacheManagerConfigFile("classpath:ehcache-shiro.xml"); 
    return em; 
  } 
  @Bean(name = "lifecycleBeanPostProcessor") 
  public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { 
    return new LifecycleBeanPostProcessor(); 
  } 
  @Bean 
  public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() { 
    DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator(); 
    daap.setProxyTargetClass(true); 
    return daap; 
  } 
  @Bean(name = "securityManager") 
  public DefaultWebSecurityManager getDefaultWebSecurityManager() { 
    DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager(); 
    dwsm.setRealm(getShiroRealm()); 
    dwsm.setCacheManager(getEhCacheManager()); 
    return dwsm; 
  } 
  @Bean 
  public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() { 
    AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor(); 
    aasa.setSecurityManager(getDefaultWebSecurityManager()); 
    return new AuthorizationAttributeSourceAdvisor(); 
  } 
  @Bean(name = "shiroFilter") 
  public ShiroFilterFactoryBean getShiroFilterFactoryBean() { 
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); 
    shiroFilterFactoryBean 
 .setSecurityManager(getDefaultWebSecurityManager()); 
    shiroFilterFactoryBean.setLoginUrl("/login"); 
    shiroFilterFactoryBean.setSuccessUrl("/sa/index"); 
    filterChainDefinitionMap.put("/sa/**", "authc"); 
    filterChainDefinitionMap.put("/**", "anon"); 
    shiroFilterFactoryBean 
 .setFilterChainDefinitionMap(filterChainDefinitionMap); 
    return shiroFilterFactoryBean; 
  } 
} 

注意点:最后一个是filterChainDefinitionMap的初始化,Map用的是linkedHashMap来初始化的,各位应用的时候将其配置成properties文件,然后初始化就ok了,改写好后直接启动Ok,搬运到spring boot应该是OK的。

别忘了在ehcache-shiro.xml

 
   
 

备注:ShiroRealmImpl类请参考官方文档 

总结

以上所述是小编给大家介绍的spring boot 集成shiro的配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/142326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号