Spring Boot bietet ein integriertes Authentifizierungs-Framework und bietet auch benutzerdefinierte Javaconfig-Konfigurationserweiterungen. Die Frühlingsserien ist auch ein ausgezeichnetes Framework, aber ich bin es gewohnt, das Apache Shiro-Framework zu verwenden. Darüber hinaus war das ursprüngliche Projekt ein integriertes Shiro -Framework. Ich ging online, um die Konfigurationsmethode zu finden, aber ich konnte keine vollständige Konfigurationsmethode finden, also entschied ich mich, sie selbst zu machen und genug Essen und Kleidung zu haben!
Um andere Frameworks in Spring Boot zu integrieren, müssen Sie zunächst die Spring Javaconfig -Methode verstehen. Sie können auch andere Module mit dieser Methode konfigurieren. Weniger Unsinn, starten Sie. . .
Vor dem Start müssen Sie Maven-Abhängigkeiten importieren (Shiro-Web optional):
<Depopentcy> <gruppe> org.apache.shiro </gruppeId> <artifactId> shiro-core </artifactId> <version> $ {shiro.version} </Version> </abhängig> <depelzipe> <GroupId> org.apache.shiro </gruppen> <artifactid> shiro-wa-wa-wab </artifactid> shiro-web </artifactid> <version> $ {shiro.version} </Version> </abhängig> <abhängigkeit> <GroupId> org.apache.shiro </Groupid> <artifactId> shiro-pring </artifactId> <version> $ {shiro.version} </Version> </abhängig> <Deponcy> <depecled> <gruppe org. <artifactId> shiro-EHCache </artifactid> <version> $ {shiro.version} </Version> </abhängig>Die ursprüngliche Shiro -Integrierte Federkonfiguration wird wie folgt herausgenommen:
<? XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/bean.xsd" default-lazy-init = "true </Beschreibung> <bean id = "SecurityManager"> <!- Single Realm App. Wenn Sie mehrere Bereiche haben, verwenden Sie stattdessen die Eigenschaft "Realms". -> <Property name = "Realm" ref = "shirorealmimpl" /> <Property name = "CACHEMANAGER" REF = "SHIROEHCACHEMANATE" /> < /bean> <!-Definieren Sie den Bereich, den Sie verwenden möchten, um eine Verbindung mit Ihrer Back-End-Sicherheitsdaten-DataSource-Daten zu erhalten:-> <bean id = "shirorealmimpl" /> <Bean id ". Ref = "SecurityManager" /> <Eigenschaft name = "loginurl" value = " /login" /> <!-Seite, auf der keine Berechtigte oder Jumps nach dem Fehler-> <Eigenschaft name = "SuccessUrl" value = " /sa /index" /> <Eigenschaft Name = "FilterchaNDeFinitions"> <! /rollen/bearbeiten/* = perms [Rolle: bearbeiten]/rollen/save = perms [Rolle: bearbeiten]/rollen/list = perms [Rolle: Ansicht]->/sa/** = authc/** = anon </value> </property> </bean> <!-Benutzerautorisierung/Authentifizierungsinformationen Cache, mit EHCCACACACACACA-> <Dean id = " name = "cachemanAGerConFigfile" value = "classPath: ehcache-shiro.xml" /> < /bean> <!-Stellen Sie sicher, dass die Bean-Ausführung von Shiros interner Lebenszyklusfunktion implementiert ist-> <Bean ID = "LifecycleBeanPostPostProzessor" /> <! Bohnen. Laufen Sie nur nach-> <!-Der Lebenszyklus-Prozessor ist ausgeführt:-> <bean abhängt auf = "LifeCycleBeanPostProcessor"> <Property name = "proxytargetClass" value = "true"/> </bean> <bean> <
Es gibt so viele Klassen, und es gibt keine Möglichkeit, sie einzeln zu konfigurieren. Die Javaconfig -Datei lautet wie folgt:
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.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 statische Karte <String, String> filterchainDefinitionMap = new LinkedHashMap <String, String> (); @Bean (name = "shirorealmimpl") public shirorealmimpl getShiroreAlm () {return New ShiroreAlmimpl (); } @Bean (name = "shireehcacheManager") public EhCacheManager getehCacheManager () {EhcacheManager em = new EhCacheManager (); Em.setCacheManAgerConFigfile ("ClassPath: Ehcache-shiro.xml"); EM zurückgeben; } @Bean (name = "LifeCycleBeanPostProcessor") public LifeCycleBeanPostPostProcessor getLifecycleBeanPostProcessor () {return New LifeCycleBeanPostProcessor (); } @Bean public defaultAdvisorAutoproxyCreator getDefaultAdvisorAutoproxyCreator () {defaultAdvisorautoproxycreator DAAP = new DefaultAdvisorautoproxyCreator (); daap.setProxytargetClass (true); DAAP zurückgeben; } @Bean (name = "SecurityManager") public defaultWebSecurityManager getDefaultWebSecurityManager () {defaultWebSecurityManager dwsm = new DefaultWebSecurityManager (); dwsm.setRealm (getShirorealm ()); dwsm.setCacheManager (GetehCacheManager ()); DWSM zurückgeben; } @Bean Public AuthorizationAttributesourceadvisor getAuthorizationAttributesourceadvisor () {AuthorizationAttributesourceadvisor aasa = new AuthorizationAttributesourceadvisor (); AASA.SetSecurityManager (getDefaultWebSecurityManager ()); Rückgabe neuer AuthorizationAttributesourceadvisor (); } @Bean (name = "shirofilter") public shirofilterFactoryBean getShiroFilterFactoryBean () {shirofilterFactoryBean shirofilterFactoryBean = new ShirofilterFactoryBean (); shirofilterfactoryBean .setSecurityManager (getDefaultWebSecurityManager ()); shirofilterFactoryBean.setLoginurl ("/login"); shirofilterfactoryBean.setsuSccessurl ("/sa/index"); filterchainedefinitionmap.put ("/sa/**", "authc"); filterchainedefinitionmap.put ("/**", "anon"); shirofilterFactoryBean .SetFilterChaindeFinitionMap (filterchaindefinitionMap); Return ShirofilterFactoryBean; }}HINWEIS: Der letzte ist die Initialisierung von FilterchaindefinitionMap. Die Karte wird durch linkedHasMap initialisiert. Wenn Sie sich bewerben, konfigurieren Sie sie in die Eigenschaftendatei und initialisieren Sie sie dann. Nach dem Umschreiben wird es in Ordnung sein. Nachdem es neu geschrieben hat, sollte es in Ordnung sein.
Vergessen Sie nicht, zu Ehcache-shiro.xml zu gehen
<Ehcache updatecheck = "false" name = "shirocache"> <defaultCache maxelementsinmemory = "10000" eternal = "False" Timetoidleseconds = "120" TimetoliveSeconds = "120" Überlauf = "falsePersistent =" falseSexpiryTheStheStheStheStheseds = " /falseSexpirytheseDexpirytheseDeStheseDs ="> ^ "falsexpirytheseDeseDs =" /"false" /"falsexpirytheseDesed" /"falseSexpirytheseDeSthesed)".
Hinweis: Bitte beachten Sie die offizielle Dokumentation für die Shirorealmimpl -Klasse
Zusammenfassen
Das obige ist die Konfigurationsmethode von Spring Boot Integrated Shiro, die Ihnen vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!