Cet article couvre les moyens d'intégrer le shiro dans les applications à ressort.
La compatibilité Java Bean de Shiro le rend idéal pour la configuration via Spring XML ou d'autres mécanismes de configuration basés sur Spring. Les applications de Shiro nécessitent une instance de l'application Singleton Security Manager (SecuriyManager). Notez que ce n'est pas nécessairement un singleton statique, mais l'application ne doit utiliser qu'une seule instance, qu'il s'agisse d'un singleton statique ou non.
1. Application autonome
Voici le moyen le plus simple d'activer l'application Singleton Security Manager dans les applications de printemps:
<! - Définir le royaume connecté à une source de données sécurisée backend: -> <bean id = "myRealm"> ... </ank> <bean id = "SecurityManager"> <! - Ceci est écrit par une seule application de royaume. S'il y a plusieurs royaumes, vous pouvez utiliser la propriété "Realms" -> <propriété name = "Realm" ref = "myRealm" /> </Eb> <bean id = "lifecyclebeanpostprocessor" /> <! - Pour l'intégration la plus simple, tout comme toutes les méthodes statiques dans SecurityUtils, il s'applique dans tous les cas, déclarant le BeanAgrer SecurityGener en tant qu'objet SingletAl Static. Mais ne faites pas cela dans une application Web. Voir la section "Application Web" ci-dessous. -> <an Bean> <propriété name = "staticMethod" value = "org.apache.shiro.securityutils.setsecurityManager" /> <propriété name = "arguments" ref = "securitymanager" /> </ bean>
2. Application WEB
Shiro a un excellent support pour les applications Web Spring. Dans une application Web, toutes les demandes Web disponibles doivent passer par le filtre Shiro. Ce filtre est très puissant et permet une personnalisation spéciale de toute chaîne de filtre basée sur les expressions du chemin d'URL.
Avant Shiro 1.0, vous avez dû utiliser une approche hybride dans les applications Web Spring pour définir les filtres de Shiro. Toutes les propriétés de configuration sont dans web.xml. Mais définir SecurityManager dans Spring.xml est un peu hostile.
Désormais, dans Shiro 1.0 ou plus, toutes les configurations de Shiro sont effectuées dans Spring XML, qui fournit un mécanisme de configuration de printemps plus robuste.
Voici comment configurer Shiro dans une application Web basée sur Spring:
web.xml
En plus de certaines autres balises de ressort (ContextLoaderListener, log4jconfigListener, etc.), les filtres et mappages de filtres suivants sont également définis:
<! - Dans ApplicationContext.xml, le nom du nom du filtre "Shirofilter" correspond à Bean. -> <filter> <filter-name> shirofilter </filter-name> <filter-class> org.springframework.web.filter.delegatingFilterProxy </filter-class> <Init-Param> <paramn-name> TargetFilterLifecycle </ paramn-nom> </itit-param> </filter> ... <! - Assurez-vous que toute demande que vous souhaitez peut être filtrée. / * Capturez toutes les demandes. En règle générale, cette carte de filtre est définie en premier (avant toutes les autres), garantissant que le shiro fonctionne dans les filtres suivants dans la chaîne de filtre: -> <mappage de filtre> <hilter-name> shirofilter </filter-name> <Url-Pattern> / * </url-poatn> </filter-mapping>
applicationContext.xml
Dans le fichier applicationContext.xml, définissez les beans SecurityManager et "Shirofilter" qui sont applicables au Web, qui seront référencés dans le web.xml.
<bean id = "shirofilter"> <propriété name = "SecurityManager" ref = "SecurityManager" /> <! - Définissez les propriétés suivantes en fonction de la situation spécifique: <propriété name = "Loginurl" value = "/ login.jsp" /> <propriété name = "SuccessUrl" value = "/ home.jsp" /> <propriété name = "unaAuthorized" value "value =" -> <! - Si un javax.servlet a été déclaré, la propriété "filtres" n'est pas nécessaire -> <! - <propriété name = "filters"> <util: map> <entry key = "analsias" value-ref = "Somefilter" /> </ util: map> </premyas> -> <propriété name) / admin / ** = authc, rôles [admin] / docs / ** = authc, perms [document: lecture] / ** = Authc </value> </paremy> </Ean> <! - Tout javax.servlet.filter qui peut être défini dans le contexte, qui sera automatiquement capturé par la propriété "shirofilter" ci-dessus et utilisée par le "filterchainDefinitions". Si nécessaire, vous pouvez ajouter manuellement / explicitement à la carte des "filtres" du shirofilter. -> <bean id = "Somefilter" /> <bean id = "AnotherFilter"> ... </ank> ... <bean id = "SecurityManager"> <! - Ceci est écrit par une seule application de royaume. S'il y a plusieurs domaines, vous pouvez utiliser la propriété "Realms". -> <propriété name = "royaume" ref = "myRealm" /> <! - Dans le cas de la reconnaissance, la session du conteneur servlet est applicable. Après non décomisé cette ligne, utilisez la session native de Shiro -> <! - <propriété name = "sessionmode" value = "native" /> -> </ank> <bean id = "lifecyclebeanpostProcessor" /> <! - Utilisez la source de données d'arrière-plan en personnalisant la sous-classe de Shiro Realm -> <bean id = "Myrealm"> ... </pEan>
SHIRO a activé les annotations
Dans une application, vous devrez peut-être utiliser les annotations de Shiro pour les vérifications de sécurité (par exemple, @Requiresrole, @RequireresPermission, etc.
<Bean Depend-on = "LifecycleBeAnPostProcessor" /> <an Bean> <Property Name = "SecurityManager" Ref = "SecurityManager" /> </ Bean>
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.