亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

spring boot集成shiro詳細教程(小結)

2024-07-13 10:16:01
字體:
來源:轉載
供稿:網友

我們開發時候有時候要把傳統spring shiro轉成spring boot項目,或者直接集成,name我們要搞清楚一個知識,就是 xml配置和spring bean代碼配置的關系,這一點很重要,因為spring boot是沒有xml配置文件的(也不絕對,spring boot也是可以引用xml配置的)

引入依賴:

  <dependency>   <artifactId>ehcache-core</artifactId>   <groupId>net.sf.ehcache</groupId>   <version>2.5.0</version>  </dependency>  <dependency>   <groupId>org.apache.shiro</groupId>   <artifactId>shiro-ehcache</artifactId>   <version>1.2.2</version>  </dependency>  <dependency>     <groupId>org.slf4j</groupId>     <artifactId>slf4j-api</artifactId>     <version>1.7.25</version>  </dependency>    <dependency>   <groupId>org.apache.shiro</groupId>   <artifactId>shiro-core</artifactId>   <version>1.2.3</version>  </dependency>  <dependency>   <groupId>org.apache.shiro</groupId>   <artifactId>shiro-web</artifactId>   <version>1.2.3</version>  </dependency>  <dependency>   <groupId>org.apache.shiro</groupId>   <artifactId>shiro-spring</artifactId>   <version>1.2.3</version>  </dependency>

如果你出現錯誤 找不到slf4j,引入依賴

<dependency>   <groupId>org.slf4j</groupId>   <artifactId>slf4j-log4j12</artifactId>   <version>1.7.25</version></dependency>

傳統xml配置如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.len"/> <!--定義realm--> <bean id="myRealm" class="com.len.core.shiro.LoginRealm">  <property name="credentialsMatcher" ref="credentialsMatcher"/> </bean> <bean id="permissionFilter" class="com.len.core.filter.PermissionFilter"/> <!--目前去掉自定義攔截驗證 由個人處理登錄業務--> <!--<bean id="customAdvicFilter" class="com.len.core.filter.CustomAdvicFilter">  <property name="failureKeyAttribute" value="shiroLoginFailure"/> </bean>--> <bean id="verfityCodeFilter" class="com.len.core.filter.VerfityCodeFilter">  <property name="failureKeyAttribute" value="shiroLoginFailure"/>  <property name="jcaptchaParam" value="code"/>  <property name="verfitiCode" value="true"/> </bean> <!-- Shiro過濾器 --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="/login"/>  <property name="unauthorizedUrl" value="/goLogin" />  <property name="filters">   <map>    <entry key="per" value-ref="permissionFilter"/>    <entry key="verCode" value-ref="verfityCodeFilter"/>    <!--<entry key="main" value-ref="customAdvicFilter"/>-->   </map>  </property>  <property name="filterChainDefinitions">   <value>    <!-- /** = anon所有url都可以匿名訪問 -->    /login = verCode,anon    /getCode = anon    /logout = logout    /plugin/** = anon    <!-- /** = authc 所有url都必須認證通過才可以訪問-->    /user/**=per    <!-- /login = main-->    /** = authc   </value>  </property> </bean> <!--安全管理器--> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  <property name="realm" ref="myRealm"/>  <property name="cacheManager" ref="cacheManager" />  <!--<property name="rememberMeManager" ref="rememberMeManager" />--> </bean> <!-- 憑證匹配器 --> <bean id="credentialsMatcher"  class="com.len.core.shiro.RetryLimitCredentialsMatcher">  <constructor-arg index="0" ref="cacheManager"/>  <constructor-arg index="1" value="5"/>  <property name="hashAlgorithmName" value="md5"/>  <property name="hashIterations" value="4"/> </bean> <!--緩存--> <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">  <property name="cacheManagerConfigFile" value="classpath:ehcache/ehcache.xml"/> </bean> <!--開啟注解--> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">  <property name="securityManager" ref="securityManager" /> </bean> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /></beans>

轉換成bean 新建類ShiroConfig

@Configurationpublic class ShiroConfig { @Bean public RetryLimitCredentialsMatcher getRetryLimitCredentialsMatcher(){  RetryLimitCredentialsMatcher rm=new RetryLimitCredentialsMatcher(getCacheManager(),"5");  rm.setHashAlgorithmName("md5");  rm.setHashIterations(4);  return rm; } @Bean public LoginRealm getLoginRealm(){  LoginRealm realm= new LoginRealm();  realm.setCredentialsMatcher(getRetryLimitCredentialsMatcher());  return realm; } @Bean public EhCacheManager getCacheManager(){  EhCacheManager ehCacheManager=new EhCacheManager();  ehCacheManager.setCacheManagerConfigFile("classpath:ehcache/ehcache.xml");  return ehCacheManager; } @Bean public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {  return new LifecycleBeanPostProcessor(); } @Bean(name="securityManager") public DefaultWebSecurityManager getDefaultWebSecurityManager(){  DefaultWebSecurityManager dwm=new DefaultWebSecurityManager();  dwm.setRealm(getLoginRealm());  dwm.setCacheManager(getCacheManager());  return dwm; } @Bean public PermissionFilter getPermissionFilter(){  PermissionFilter pf=new PermissionFilter();  return pf; } @Bean public VerfityCodeFilter getVerfityCodeFilter(){  VerfityCodeFilter vf= new VerfityCodeFilter();  vf.setFailureKeyAttribute("shiroLoginFailure");  vf.setJcaptchaParam("code");  vf.setVerfitiCode(true);  return vf; } @Bean(name = "shiroFilter") public ShiroFilterFactoryBean getShiroFilterFactoryBean(){  ShiroFilterFactoryBean sfb = new ShiroFilterFactoryBean();  sfb.setSecurityManager(getDefaultWebSecurityManager());  sfb.setLoginUrl("/login");  sfb.setUnauthorizedUrl("/goLogin");  Map<String, Filter> filters=new HashMap<>();  filters.put("per",getPermissionFilter());  filters.put("verCode",getVerfityCodeFilter());  sfb.setFilters(filters);  Map<String, String> filterMap = new LinkedHashMap<>();  filterMap.put("/login","verCode,anon");  //filterMap.put("/login","anon");  filterMap.put("/getCode","anon");  filterMap.put("/logout","logout");  filterMap.put("/plugin/**","anon");  filterMap.put("/user/**","per");  filterMap.put("/**","authc");  sfb.setFilterChainDefinitionMap(filterMap);  return sfb; } @Bean public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {  DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();  advisorAutoProxyCreator.setProxyTargetClass(true);  return advisorAutoProxyCreator; } @Bean public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor(){  AuthorizationAttributeSourceAdvisor as=new AuthorizationAttributeSourceAdvisor();  as.setSecurityManager(getDefaultWebSecurityManager());  return as; } @Bean public FilterRegistrationBean delegatingFilterProxy(){  FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();  DelegatingFilterProxy proxy = new DelegatingFilterProxy();  proxy.setTargetFilterLifecycle(true);  proxy.setTargetBeanName("shiroFilter");  filterRegistrationBean.setFilter(proxy);  return filterRegistrationBean; }

其中有個別類是自定義的攔截器和 realm,此時spring 即能注入shiro 也就是 spring boot集成上了 shiro

如果你因為其他配置引起一些失敗,可以參考開源項目 lenos快速開發腳手架 spring boot版本,其中有對shiro的集成,可以用來學習

地址:https://gitee.com/bweird/lenosp

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
激情成人中文字幕| 亚洲精品少妇网址| 国产91在线播放九色快色| 欧美成人免费大片| 最新的欧美黄色| 久久精品福利视频| 成人免费视频在线观看超级碰| 日韩中文字幕在线| 亚洲精品国精品久久99热| 欧美xxxx综合视频| 国产精品一区=区| 欧美激情亚洲另类| 欧美激情精品久久久久久变态| 91美女福利视频高清| 国产丝袜一区视频在线观看| 红桃av永久久久| 国产一区二区三区在线视频| 久久精品国产久精国产思思| 国产一区视频在线播放| 久久九九热免费视频| 亚洲精品999| 欧美日韩一区二区免费在线观看| 岛国av在线不卡| 色偷偷av亚洲男人的天堂| 欧美在线视频播放| 亚洲第一男人天堂| 欧美日韩ab片| 91av视频在线播放| 日韩在线免费视频观看| 欧洲美女免费图片一区| 18一19gay欧美视频网站| 国产精品久久77777| 97成人精品视频在线观看| 在线播放国产精品| 日韩精品丝袜在线| 日本亚洲精品在线观看| 欧美精品免费在线| 日韩一区二区欧美| 91精品国产综合久久久久久蜜臀| 亚洲伦理中文字幕| 黄色成人在线播放| 成人黄色免费在线观看| 美女少妇精品视频| 在线性视频日韩欧美| 国产精品香蕉在线观看| 国产精品久久精品| 午夜精品视频网站| 亚洲人成网在线播放| 国产精品久久久av久久久| 91九色在线视频| 亚洲视频在线免费观看| 国产精品久久久av久久久| 中文字幕日韩精品有码视频| 91视频国产精品| 色哟哟入口国产精品| 中文字幕亚洲二区| 久久免费视频网站| 国产一区av在线| 国产不卡在线观看| 久久精品一本久久99精品| 国产精品69久久久久| 最近2019中文字幕一页二页| 国产成人亚洲综合青青| 韩国国内大量揄拍精品视频| 欧美激情视频三区| 中文字幕日韩欧美在线| 精品美女国产在线| 国产欧美久久一区二区| 欧美床上激情在线观看| 国产suv精品一区二区三区88区| 成人福利网站在线观看11| 亚洲欧洲高清在线| 久久伊人精品天天| 欧洲亚洲免费视频| 欧美性猛交视频| 91久久综合亚洲鲁鲁五月天| 亚洲偷欧美偷国内偷| 亚洲福利在线看| 成人网欧美在线视频| 成人精品aaaa网站| 欧美激情aaaa| 精品国产欧美成人夜夜嗨| 日韩中文字幕视频在线观看| 夜夜嗨av一区二区三区四区| 成人免费观看网址| 国产精品jizz在线观看麻豆| 久久久精品在线| 成人在线激情视频| 久久手机免费视频| 97超碰国产精品女人人人爽| 亚洲一区亚洲二区| 国产日韩欧美在线播放| 日韩av色综合| 欧美重口另类videos人妖| 国产xxx69麻豆国语对白| 91爱视频在线| 国产精品自拍小视频| 91精品国产91久久久久久| 久久国产精品久久久久久久久久| 777国产偷窥盗摄精品视频| 国产欧美婷婷中文| xxxxxxxxx欧美| 92看片淫黄大片欧美看国产片| 国产免费观看久久黄| 欧美激情videos| 91精品久久久久久综合乱菊| 日韩高清电影免费观看完整版| 国产脚交av在线一区二区| 成人激情黄色网| 欧美黑人xxxⅹ高潮交| 国产精品日韩专区| 欧美成人久久久| 91久久精品国产91性色| 亚洲国产一区自拍| 亚洲精品日韩久久久| 国产精品中文字幕在线观看| 黄色成人av在线| 国产亚洲人成网站在线观看| 欧美电影免费观看大全| 欧美高清电影在线看| 69久久夜色精品国产7777| 国产精品视频26uuu| 精品性高朝久久久久久久| 日韩三级影视基地| 亚洲美女www午夜| 色一区av在线| 奇门遁甲1982国语版免费观看高清| 久久精品最新地址| 国产精品99久久99久久久二8| 奇米影视亚洲狠狠色| 久久999免费视频| 亚洲人成网站色ww在线| 91天堂在线观看| 欧美壮男野外gaytube| 欧美洲成人男女午夜视频| 日韩有码片在线观看| 日本一区二区三区在线播放| 欧美色视频日本高清在线观看| 日本伊人精品一区二区三区介绍| 日韩美女视频免费在线观看| 中国日韩欧美久久久久久久久| 日韩av中文字幕在线免费观看| 狠狠躁夜夜躁久久躁别揉| 欧美日韩亚洲精品内裤| 久久视频免费观看| 欧美三级欧美成人高清www| 青青草99啪国产免费| 91av视频在线| 国产999精品视频| 国产精品久久在线观看| 国产亚洲精品久久久优势| 亚洲天堂成人在线视频| 成人激情视频在线观看| 亚洲色无码播放| 日韩网站免费观看| 中文字幕在线看视频国产欧美在线看完整| 久久久久久国产精品三级玉女聊斋| 亚洲欧美中文字幕在线一区| 国产精品爽爽爽爽爽爽在线观看| 欧美大片免费观看| 国产一区二区在线免费视频| 色悠悠久久久久| 欧美视频精品一区| 亚洲一区二区三区sesese|