Dieser Artikel behandelt Möglichkeiten, Shiro in federbasierte Anwendungen zu integrieren.
Die Java-Bean-Kompatibilität von Shiro macht es ideal für die Konfiguration über Spring XML oder andere federbasierte Konfigurationsmechanismen. Shiros Bewerbungen erfordern eine Instanz des Anwendungs Singleton Security Manager (SecuriYManager). Beachten Sie, dass dies nicht unbedingt ein statischer Singleton ist, aber die Anwendung sollte nur eine Instanz verwenden, unabhängig davon, ob es sich um einen statischen Singleton handelt oder nicht.
1. Standalone -Anwendung
Hier ist der einfachste Weg, um den Anwendung Singleton Security Manager in Frühlingsanwendungen zu ermöglichen:
<!-Definieren Sie Realm, das mit einer Backend Secure Data Source verbunden ist:-> <bean id = "myrealm"> ... </bean> <bean id = "SecurityManager"> <!-Dies wird von einer einzigen Realm-Anwendung geschrieben. Wenn es mehrere Bereiche gibt, können Sie die Eigenschaft "realms" verwenden-> <Eigenschaft name = "realm" ref = "myrealm"/> </bean> <bean id = "lifecycleBeanPostProcessor"/> <! Aber tun Sie dies nicht in einer Webanwendung. Siehe Abschnitt "Webanwendung" unten. -> <bean> <Eigenschaft name = "staticMethod" value = "org.apache.shiro.securityutils.setsecurityManager"/> <Eigenschaft name = "Argumente" Ref = "SecurityManager"/> </bean>
2.Web -Anwendung
Shiro hat eine hervorragende Unterstützung für Spring -Webanwendungen. In einer Webanwendung müssen alle verfügbaren Webanfragen den Shiro -Filter übergeben. Dieser Filter ist sehr leistungsfähig und ermöglicht eine spezielle Anpassung einer Filterkette basierend auf URL -Pfadausdrücken.
Vor Shiro 1.0 mussten Sie einen hybriden Ansatz in Spring -Webanwendungen verwenden, um die Filter von Shiro zu definieren. Alle Konfigurationseigenschaften finden Sie in web.xml. Das Definieren von SecurityManager in Spring.xml ist jedoch etwas unfreundlich.
In Shiro 1.0 oder höher werden alle Shiro -Konfigurationen in Feder XML durchgeführt, was einen robusteren Federkonfigurationsmechanismus bietet.
So konfigurieren Sie Shiro in einer federbasierten Webanwendung:
web.xml
Zusätzlich zu einigen anderen Spring -Tags (contextloaderListener, log4jconfigListener usw.) werden auch die folgenden Filter und Filterzuordnungen definiert:
<!- In ApplicationContext.xml ist der Name des Filternamens "Shirofilter" -Bohnen-Matches. -> <Filter> <Filter-Name> Shirofilter </filter-name> <filterklasse> org.springframework.web.filter.delegatingFilterProxy </Filter-Class> <init-param> <param-name> targetFilterLifecycle </param-name> </param-name </init-param> </filter> ... <!-Stellen Sie sicher, dass eine gewünschte Anfrage gefiltert werden kann. /* Erfassen Sie alle Anfragen. Typischerweise wird diese Filterkarte zuerst definiert (vor allen anderen), um sicherzustellen, dass Shiro in nachfolgenden Filtern in der Filterkette funktioniert:-> <Filter-Mapping> <filtername> shirofilter </filter-name> <URL-PATTER>/*
applicationContext.xml
Definieren Sie in der Datei applicationContext.xml die SecurityManager- und "Shirofilter" -Bohnen, auf die auf das Web anwendbar ist, auf die im web.xml verwiesen wird.
<bean id = "shirofilter"> <Eigenschaft name = "SecurityManager" Ref = "SecurityManager"/> <!- Definieren Sie die folgenden Eigenschaften gemäß der spezifischen Situation: <Eigenschaft name = "loginurl" value = "/login.jsp"/> <Eigenschaft name = "Successurl" value = "/home.jsp"/> <Eigenschaftsname ". -> <!-Wenn Javax.servlet deklariert wurde, ist die Eigenschaft "Filter" unnötig-> <! Authc, Rollen [admin]/docs/** = authc, perms [dokument: read]/** = authc </value> </property> </bean> <!- Jeder javax.servlet.filterbohnen, der im Kontext definiert werden kann, das automatisch von der "SHIROFILTER" -Bean übernommen wird und mit dem "Filterchains" -Leigen verwendet wird. Bei Bedarf können Sie die "Filter" -Karte des Shirofilter manuell/explizit hinzufügen. -> <bean id = "seltsFilter"/> <bean id = "AnotherFilter"> ... </bean> ... <bean id = "SecurityManager"> <!-Dies wird von einer einzelnen Realm-Anwendung geschrieben. Wenn es mehrere Bereiche gibt, können Sie die Eigenschaft "Realms" verwenden. -> <Property name = "Realm" ref = "myrealm"/> <!-Im Falle der Anerkennung gilt die Sitzung des Servlet-Containers. Verwenden Sie nach der Überzeugung dieser Zeile Shiros native Sitzung-> <!-<Eigenschaft name = "SessionMode" value = "native"/>-> </bean> <bean id = "LifecycleBeanPostProcessor"/> <!
Shiro aktivierte Anmerkungen
In einer Anwendung müssen Sie möglicherweise Shiros Annotationen für Sicherheitsprüfungen verwenden (z. B. @RequiresRole, @RequireSPermission usw. Dies erfordert, dass Shiros Frühlings -AOP -Integration nach Bedarf nach angemessenen kommentierten Klassen scannt und Sicherheitslogik ausführen kann.
<bean abhängig auf = "LifecycleBeanPostProcessor"/> <bean> <Property name = "SecurityManager" Ref = "SecurityManager"/> </bean>
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.