Wenn wir uns entwickeln, müssen wir manchmal traditionelle Frühlings -Shiro in Spring -Boot -Projekte konvertieren oder direkt integrieren. Wir müssen ein Namenskenntnis ermitteln, das die Beziehung zwischen XML -Konfiguration und Feder -Bean -Code -Konfiguration ist. Dies ist sehr wichtig, da Spring Start keine XML -Konfigurationsdatei hat (nicht absolut, Spring Start kann auch die XML -Konfiguration verweisen)
Einführung von Abhängigkeiten:
<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> <gruppeId> org.slf4j </GroupId> <artifactId> SLF4J-API </artifactId> <version> 1.7.25 </Version> </abhängig> <Deichung> <GroupId> org.apache.shiro <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> <gruppe> org.apache.shiro </Groupid> <artifactId> shiro-pring </artifactid> <version> 1.2.3 </Version> </abhängig>
Wenn Sie einen Fehler erhalten, SLF4J nicht finden, importieren Sie Abhängigkeiten
<De vorhöhe> <gruppe> org.slf4j </Groupid> <artifactID> SLF4J-log4j12 </artifactId> <version> 1.7.25 </Version> </abhängig>
Die herkömmliche XML -Konfiguration lautet wie folgt:
<? xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.spingframework.org/schwa XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.g/schema/aop/sping/sping-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <context: component-scan base-package =" com.len name = "AnmeldeinformationenMatcher" ref = "Anmeldeinformationen"/> </bean> <bean id = "promissionFilter"/> <!-Derzeit entfernen id = "VerfityCodeFilter"> <Eigenschaft name = "fehlerkeyAttribute" value = "shirologinFailure"/> <Eigenschaft name = "jcaptchaparam" value = "code"/> <Eigenschaft name = "veriticode" value = "true"/</bean> <!-Shiro Filter-> <Bean id = "-STOMALTER"> <! Ref = "SecurityManager"/> <Eigenschaft name = "loginUrl" value = "/login"/> <Eigenschaft name = "unauthorizedurl" value = "/gologin"/> <Eigenschaft name = "filters"> <map> <Eintragstaste "pro" pro "per" value-ref = "permissionFilter"/> <map "vercodode" value-ref = "value-ref key="main" value-ref="customAdvicFilter"/>--> </map> </property> <property name="filterChainDefinitions"> <value> <!-- /** = anonAny URLs can be accessed anonymously --> /login = verCode,anon /getCode = anon /logout = logout /plugin/** = anon <!-- /** = authc All urls must Seien Sie authentifiziert zu access->/user/** = pro <!-/login = main->/** = authc </value> </property> </bean> <!-Security Manager-> <bean id = "SecurityManager"> <Property name = "Realm" Ref = "myrealm"/> <Eigentumsname = "cachemanager" ref = "cachemanager"/"-<! ref = "rememberMemanager"/>-> </bean> <!-Anmeldeinformationen-> <bean id = "Anmeldeinformationen"> <Constructor-Arg Index = "0" Ref = "CacheManager"/> <Constructor-Arg Index = "1" value = "5"/> <Eigenschaft name = " value = "4"/> </bean> <!-cache-> <bean id = "cachemanager"> <Eigenschaft name = " id = "LifecycleBeanPostProcessor" /> < /beans>
Konvertieren in Bean Erstellen Sie eine neue Klasse Shiroconfig
@ConfigurationPublic Class Shiroconfig {@Bean public retrylimitcredentials GetRRErylimitcredentialsMatcher () {retylIrtcredentialsMatcher rm = new Retylimitcredentials (getCachemanager (), "5"); rm.sethashalgorithmName ("md5"); rm.sethashiterations (4); RM RM zurückgeben; } @Bean public loginrealm getLoginRealm () {loginrealm realm = new Loginrealm (); realm.SetcredentialsMatcher (getRetrylimitcredentialsMatcher ()); RECH RECHM; } @Bean public ehCAchemanager getCacheManager () {EhCACHEMANATER EHCACHEMANAGER = new Ehcachemanager (); EhcacheManager.SetCacheManAGerConFigfile ("ClassPath: Ehcache/Ehcache.xml"); Rückkehr 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 zurückgeben; } @Bean public promissionFilter GetPermissionFilter () {permissionFilter pf = new promissionFilter (); 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 getShiroToryBean () {shirofilterFactoryBean sfb = new ShirofilterFactoryBean (); SFB.SetSecurityManager (getDefaultWebSecurityManager ()); sfb.setLoginurl ("/login"); sfb.setunauthorizedurl ("/gologin"); Karte <string, filter> filter = new HashMap <> (); filters.put ("pro", GetPermissionFilter ()); filters.put ("vercode", getverfityCodeFilter ()); SFB.SetFilters (Filter); Karte <String, String> filterterap = 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/**", "pro"); filtermap.put ("/**", "authc"); SFB.SetFilterChaindeFinitionMap (Filterterap); Return SFB; } @Bean public defaultAdvisorautoproxyCreator advisorautoproxyCreator () {defaultAdvisorautoproxyCreator advisorautoproxycreator = new DefaultAdvisorautoproxycreator (); advisorautoproxyCreator.setProxytargetClass (true); Return AdvisorautoproxyCreator; } @Bean Public AuthorizationAttributesourceAwvisor getAuthorizationAttributesourceAwvisor () {AutorizationAttributesourceadvisor AS = New AuthorizationAttributesourceadvisor (); AS.SetSecurityManager (getDefaultWebSecurityManager ()); zurückkehren als; } @Bean public FilterregistrationBean delegatingFilterProxy () {FilterregistrationBean FilterregistrationBean = new FilterregistrationBean (); DelegatingFilterProxy proxy = neu delegatingFilterProxy (); proxy.settargetFilterLifecycle (true); Proxy.SettargetbeAnname ("Shirofilter"); filterregistrationBean.setFilter (Proxy); Rückgabefilterregistrierungsbean; }Einige der Kategorien sind benutzerdefinierte Interceptors und Reiche. Zu diesem Zeitpunkt kann Spring Shiro injizieren, dh Spring Boot integriert Shiro
Wenn Sie aufgrund anderer Konfigurationen versagen, können Sie sich auf die Open -Source -Projekt Lenos Quick Development Scaffolding Spring Boot -Version beziehen, die in die Integration mit Shiro enthält, die zum Lernen verwendet werden kann
Adresse: https://gitee.com/bweirird/lenosp
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.