Spring Boot proporciona un marco de autenticación incorporado y también proporciona extensiones de configuración JavaconFig personalizadas. Spring-Werercurity también es un marco excelente, pero estoy acostumbrado a usar el marco Apache Shiro. Además, el proyecto original fue un marco integrado de Shiro. Me conecté en línea para encontrar el método de configuración, pero no pude encontrar un método de configuración completo, ¡así que decidí hacerlo yo mismo y tener suficiente comida y ropa!
Para integrar otros marcos en Spring Boot, primero debe comprender el método Spring Javaconfig. También puede configurar otros módulos utilizando este método. Menos tonterías, comienza. . .
Antes de comenzar, debe importar dependencias de Maven (shiro-web opcional):
<Spendency> <MoupRid> org.apache.shiro </groupid> <artifactid> shiro-core </arfactid> <version> $ {shiro.version} </verversion> </dependency> <epardency> <proupid> org.apache.shiro </groupid> <artifactid> shiro-web </artifactid> <Persion> $ {shiro.version} </versión> </pendency> <epardency> <grupid> org.apache.shiro </groupid> <artifactid> shiro-spring </artifactid> <versión> $ {shiro.version} </versión> </pendency> <epartency> <proupid> org.apache.iro </groupo </groupid> <artifactid> shiro-ehcache </artifactid> <versión> $ {shiro.version} </versión> </pendency>Se saca la configuración original de SHIRO Integrated Spring, de la siguiente manera:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans.xsd" default-lazy-init = "true"> <Shiro> shiro la configuración de seguridad viene: http://shiro.apache.org/spring. </descripción> <bean id = "SecurityManager"> <!- Aplicación de reino único. Si tiene múltiples reinos, use la propiedad 'Realms' en su lugar. -> <Property name = "Realm" ref = "shirorealMiMpl" /> <Property name = "Cachemanager" ref = "shiroehcachemanager" /> </ bean> <!-Defina el reino que desea usar para conectarse a su back-end Security DataSource:-> <bean id = "shirealmimpl" /> <bean id = "shirofilter"> <name de propiedad ">" name de propiedad ". ref = "SecurityManager"/> <Property name = "Loginurl" value = "/login"/> <!-Página que no tiene permiso o salta después de la falla-> <propiedad Name = "Succesurl" Value = "/Sa/Index"/> <Property Name = "FilterChainDefinitions"> <!-, Roles [admin], Perms [documento: Leer]-> <Value> <!-/User/User. = Perms [rol: edit]/rol/save = permans [rol: edit]/rol/list = permans [rol: ver]->/sa/** = authc/** = anon </valor> </propiedad> </bean> <!-Autorización de usuarios/información de información de autenticación, utilizando ehcache cache-> <bean id = "shiroehcacheManager"> <nombre de propiedad = "name de CACHOCHEMEAGFILELEGILEME" " value = "classpath: ehcache shiro.xml" /> < /bean> <!-Asegúrese de que la ejecución del bean de la función de ciclo de vida interna de Shiro se implementa-> <bean id = "lifecycleBeanPostProcessor" /> <!-AOP Method-Level-Check-> <!-Enable anotaciones SHIRO para los frijoles de resorte de Spring-Configured. Solo ejecute-> <!-The LifeCycleBeanProcessor ha ejecutado:-> <bean depends-on = "lifecycleBeanPostProcessor"> <Property name = "proxyTargetClass" value = "true"/> </bean> <Bean> <Property Name = "SecurityManager" Ref = "SecurityManager"/> </ Bean> </ Beans>
Hay tantas clases, y no hay forma de configurarlas una por una. El archivo JavaConfig es el siguiente:
import java.util.linkedhashmap; import java.util.map; importar org.apache.shiro.cache.ehcache.ehcachemanager; importar org.apache.shiro.spring.lifecycleBeanPostProcessor; importar org.apache.shiro.spring.security.interceptor.authorizationAttributesurCeadVisor; importar org.apache.shiro.spring.shirofilterfactorybean; importar org.apache.shiro.web.mgt.defaultwebsecurityManager; importar org.springframework.aop.framework.autoproxy.defaultadvisorautoproxycreator; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; @Configuration public class shiroconfiguration {private static map <String, String> FilterChainDefinitionMap = new LinkedHashMap <String, String> (); @Bean (name = "shireRealMimpl") public shirorealMimpl getShirorealM () {return new shirorealMimpl (); } @Bean (name = "shiroehcachemanager") public ehcachemanager getehcachemanager () {ehcachemanager em = new ehcachemanager (); EM.SetCachemanagerConfigFile ("Classpath: ehcache-shiro.xml"); devolverlos; } @Bean (name = "lifecycleBeanPostProcessor") public lifecycleBeanPostProcessor getLifecycleBeanPostProcessor () {return New LifeCycleBeanPostProcessor (); } @Bean Public DefaultAdVisoraUtOproxyCreator getDefaultAdVisoraUtOproxyCreator () {defaultAdVisoraUtOproxyCreator daap = new DefaultAdVisoraUtoProxyCreator (); daap.setProxyTargetClass (verdadero); devolver daap; } @Bean (name = "SecurityManager") PublicwebSecurityManager getDefaultWebSecurityManager () {DefaultWebSecurityManager DWSM = new DefaultWebSecurityManager (); dWSM.SetRealm (getShirorealM ()); DWSM.SetCachemanager (getehcachemanager ()); regresar DWSM; } @Bean Public AuthorizatizationAttributeSourCeAdVisor getAuthorizationAttributesOurCeadVisor () {AuthorizationAttributeSourCeAdVisor AASA = new AuthorizationAttributeseurCeadVisor (); aasa.setSecurityManager (getDefaultWebSecurityManager ()); devolver nuevo autorizatizationAttributeUrceAdVisor (); } @Bean (name = "shirofilter") public shirofilterFactoryBean getShirofilterFactoryBean () {shirofilterFactoryBean shirofilterFactoryBean = new shirofilterFactoryBean (); ShirofilterFactoryBean .SetSecurityManager (getDefaultWebSecurityManager ()); shirofilterFactoryBean.setLoginUrl ("/login"); shirofilterFactoryBean.SetSuccessurl ("/sa/index"); filterChainDefinitionMap.put ("/sa/**", "authc"); filterChainDefinitionMap.put ("/**", "anon"); ShirOfilterFactoryBean .SetFilterChainDefinitionMap (filtreChainDefinitionMap); return shirofilterfactorybean; }}Nota: El último es la inicialización de FilterChainDefinitionMap. El mapa se inicializa mediante LinkedHashMap. Cuando lo solicite, configúrelo en el archivo de propiedades y luego inicialice. Después de reescribirlo, estará bien. Después de reescribir, debería estar bien.
No olvides ir a ehcache-shiro.xml
<ehcache updateCheck="false" name="shiroCache"> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" /> </ehcache>
Nota: Consulte la documentación oficial para la clase ShirorealMIMPL
Resumir
Lo anterior es el método de configuración de Spring Boot integrado Shiro que se le presentó. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!