Когда мы развиваемся, нам иногда нужно преобразовать традиционные весенние Shiro в Spring Boot Projects или напрямую интегрировать их. Нам нужно выяснить знание имени, которое представляет собой связь между конфигурацией XML и конфигурацией кода бобов Spring. Это очень важно, потому что Spring Boot не имеет файла конфигурации XML (не абсолютный, Spring Boot также может ссылаться на конфигурацию XML)
Введение зависимостей:
<depervice> <artifactid> ehcache-core </artifactid> <groupid> net.sf.ehcache </GroupId> <sersive> 2.5.0 </version> </dependent> <dehyed> <groupid> org.apache.shiro </GroupD> <strifactid> shiro-ehcache </artifactid> <serse> 1.2.2 </211 </. <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> <dependency> <groupId> org.apache.shiro </GroupId> <artifactid> shiro-spring </artifactid> <sersive> 1.2.3 </version> </deperency>
Если вы получите ошибку, не можете найти SLF4J, импорт зависимости
<Depective> <groupId> org.slf4j </GroupId> <artifactid> slf4j-log4j12 </artifactid> <sersive> 1.7.25 </version> </depertion>
Традиционная конфигурация 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.springframe.orshema. xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.spramework.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-can-package =" com.len "/> <!-определение realmer-> <bean id =" myrealme = "com.len"/> <!-definition-> <bean id = ". ref = "credentialSmatcher"/> </bean> <bean id = "разрешение-файл"/> <!-В настоящее время удалите проверку пользовательского перехвата и обрабатывайте службы входа в систему от отдельных лиц-> <!-<bean id = "customadvicfilter"> <свойство name = "beankeyattribute" value = "shirologinfailure"/> </bean>-> <BeanCILIBUT name = "hipplykeattribute" value = "shirologinfailure"/> <name = "jcaptchaparam" value = "code"/> <name = "verfiticode" value = "true"/> </bean> <!-Shiro Filter-> <Bean id = "shirofilter"> name name = "refmanager" ref ref = "ref-name"/> <propectmanage "/"/> <propectment "/"/"/". value = "/login"/> <name = "unauthorizedUrl" value = "/gologin"/> <name = "filters"> <map> <wint key = "per" value-ref = "ressissionFilter"/> <intry key = "vercode" value-ref = "verfitycodefilter"/> <! value-ref = "CustomAdvicFilter" />-> < /map> < /property> <name = "filterChainDefinitions"> <Dague> <!- /** = Anonany URL-адреса можно получить анонимно-> /login = vercode, Anon /getCode = Anon /vogout = argout /plugin /** = anon <! Access->/user/** = per <!-/login = main->/** = authc </value> </property> </bean> <!-Manager-> <bean id = "securitymanager"> <свойство = "Realm" ref = "MyRealM"/> <Property name = "cachemanager" ref = "cachemanager"/> <! />-> </bean> <!-Matchter Credential-> <Bean id = "credentialSmatcher"> <constructor-arg index = "0" ref = "cachemanager"/> <constructor-arg index = "1" value = "5"/> <property name = "hashalgorithmname" value = "md5"/> <shipleh gahalgorithmname "value =" md5 "/>". </bean> <!-cache-> <bean id = "cachemanager"> <name = "cachemanagerconfigfile" value = "classpath: ehcache/ehcache.xml"/> </bean> <!-Open Annotation-> <bean> <proportly name = "security Manager" ref = "SecurityManager"/> </bean> </bean> </bean> </bean id = "LifeCyclebeanpostProcessor" /> < /Beans>
Преобразование в Bean Создать новый класс ShiroConfig
@ConfigurationPublic Class ShiroConfig {@bean public retryLimitCredentialSmatcher getRetryLimitCredentialSmatcher () {retryLimitCredentialSmatcher rm = new retryLimitCredentialSmatcher (getCacheManager (), "5"); rm.sethashalgorithmname ("md5"); rm.sethashiterations (4); вернуть RM; } @Bean public loginRealm getLoginRealm () {loginRealm realm = new LoginRealm (); RealM.SetCredentialSmatcher (getReTryLimitCredentialSmatcher ()); вернуть царство; } @Bean public ehcachemanager getcachemanager () {ehcachemanager ehcachemanager = new ehcachemanager (); ehcachemanager.setcachemanagerconfigfile ("classpath: ehcache/ehcache.xml"); вернуть ehcachemanager; } @Bean Public LifeCyclebeanpostProcessor getLifeCyclebeanpostProcessor () {return new LifeCyclebeanpostProcessor (); } @Bean (name = "securityManager") public DefaultWebsecurityManager getDefaultWebsecurityManager () {defaultWebSecurityManager dwm = new DefaultWebsecurityManager (); DWM.SetRealm (getLoginRealm ()); DWM.SetCachEmanager (getCachEmanager ()); вернуть DWM; } @Bean public ressissionfilter getpermissionfilter () {разрешениефильтер pf = new RemisionFilter (); вернуть PF; } @Bean public verfitycodefilter getverfitycodefilter () {verfitycodefilter vf = new verfitycodefilter (); vf.setfailurekeyattribute ("shirologinfailure"); vf.setjcaptchaparam ("code"); vf.setverfiticode (true); вернуть VF; } @Bean (name = "shirofilter") public shirofilterfactorybean getshirofilterfactorybean () {shirofilterfactorybean sfb = new shirofilterfactorybean (); sfb.setsecuritymanager (getDefaultWebsecurityManager ()); sfb.setloginurl ("/login"); sfb.setunAuthorizedUrl ("/gologin"); Карта <string, filter> filters = new Hashmap <> (); filters.put («per», getpermissionfilter ()); filters.put ("vercode", getverfitycodefilter ()); SFB.SetFilters (фильтры); Map <string, string> filtermap = new LinkedHashmap <> (); filtermap.put ("/login", "Vercode, Anon"); //filtermap.put("/login","non "); filtermap.put ("/getCode", "Anon"); filtermap.put ("/logout", "logout"); filtermap.put ("/plugin/**", "anon"); filtermap.put ("/user/**", "per"); filtermap.put ("/**", "authc"); SFB.SetFilterChainDefinitionMap (filtermap); вернуть SFB; } @Bean Public DefaultAdvisorautoproxycreator advisorautoproxycreator () {defaultadvisoroproxycreator advisorautoproxycreator = new defaultadvisorautoproxycreator (); Advisorautoproxycreator.setProxyTargetClass (true); вернуть advisorautoproxycreator; } @Bean Public AuthorizationAttributesourceadvisor getAuthorizationattributesourceadvisor () {Authorizationattributesourceadvisor as = new Authorizationattributesourceadvisor (); as.setecuritymanager (getDefaultWebsecurityManager ()); вернуть как; } @Bean Public FilterRegistrationBean DelegatingFilterProxy () {FilterRegistrationBean FilegerRegistrationBean = new FilterRegistrationBean (); DelegatingFilterProxy Proxy = new DelegatingFilterProxy (); proxy.settargetfilterlifecycle (true); Proxy.SetTargetBeanName ("Shirofilter"); FilterRegistrationBean.SetFilter (Proxy); возврат FilterRegistrationBean; }Некоторые из категорий являются пользовательскими перехватчиками и царством. В настоящее время пружина может вводить Shiro, то есть Spring Boot интегрирует Shiro
Если вы терпите неудачу из -за других конфигураций, вы можете обратиться к проекту с открытым исходным кодом Lenos Quick Development Spring Boot Version, которая имеет интеграцию с Shiro, которую можно использовать для изучения
Адрес: https://gitee.com/bweird/lenosp
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.