A Spring Boot fornece uma estrutura de autenticação interna e também fornece extensões de configuração Javaconfig personalizadas. O Spring-Scurity também é uma excelente estrutura, mas estou acostumado a usar a estrutura Apache Shiro. Além disso, o projeto original era uma estrutura Shiro integrada. Fui on -line para encontrar o método de configuração, mas não consegui encontrar um método de configuração completa, então decidi fazer isso sozinho e ter comida e roupas suficientes!
Para integrar outras estruturas na inicialização da primavera, você deve primeiro entender o método javaconfig da primavera. Você também pode configurar outros módulos usando esse método. Menos bobagem, comece. . .
Antes de começar, você precisa importar dependências do Maven (Shiro-Web Opcional):
<Depencency> <GroupID> org.apache.shiro </foupiId> <TROTIFACTID> Shiro-core </sutifactId> <Version> $ {shiro.version} </sipers> </dependency> <pendencency> <voupid> org.apache.shiro </grupidid> <stifactid> shiro-web-we-web.apache.shiro </grupid> <tutifactid> shiro-web-we-web-web.apache.shiro </grupid> <tutifactid> shiro-web-we-web.apache.shiro </grupid> <tutifactid> shiro-web-we-web-web.apache.shiro </grupo. <versão> $ {shiro.version} </versão> </dependency> <pendency> <roupidId> org.apache.shiro </groupiD> <TRARFACTID> shiro-spring </speRifactId> <sipers> $ {shiro.version} </version> </dependence <pendence> <rushId> <TarfactId> shiro-ehcache </artifactId> <versão> $ {shiro.version} </versão> </dependency>A configuração original da primavera integrada Shiro é retirada, como segue:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans.xsd" default-lazy-init = "True"> <crection> Shiro Security Chaves de: http://shiro.apache.org/spring.html </cription> <bean id = "SecurityManager"> <!- App de reino único. Se você tiver vários reinos, use a propriedade 'Realms'. -> <propriedade name = "realM" ref = "shirorealMImpl" /> <propriedade name = "cachemanager" ref = "shiroehcachemanager" /> < /bean> <!-define o reino que você deseja usar para conectar-se ao seu conjunto de segurança de segurança:-> <bean id = "shirorElmimMplympl" ref = "SecurityManager" /> <propriedade name = "Loginurl" value = " /login" /> <!-Página que não tem permissão ou salta após falha-> <name da propriedade = "successurl" value = " /sa /index" /> <names name = "FilterChaIndefinition"> <!-, ROLS [admin], [Document]: REULT: ROUS [LEDRATH]. /função/edit/* = perms [função: editar]/função/salvar = perms [função: editar]/funt/list = perms [função: visualizar]->/sa/** = authc/** = anon </valor> </operation> </bean> <!-AUTORAÇÃO DE AUTORAÇÃO/AUTHenticação do usuário, usando ehcache cache> cache> name = "CachemanageRerConfigFile" value = "ClassPath: ehcache-shiro.xml" /> < /bean> <!-Garanta que a execução do feijão da função do ciclo de vida interna de Shiro seja implementada-> <Bean id = "LifecycleBeanProcessor" /> <!-APOP-LEVENDONENENDON) feijões. Apenas corra depois-> <!-O LifeCycleBeanProcessor foi executado:-> <bean depende-one = "LifeCycleBeanPostProcessor"> <propriedade name = "proxyTargetClass" value = "true"/> </bean> <Bean> <nome da propriedade "SecurityManager" = "SecurityManager" </4
Existem tantas aulas, e não há como configurá -las uma a uma. O arquivo javaconfig é o seguinte:
importar java.util.linkedhashmap; importar java.util.map; importar org.apache.shiro.cache.ehcache.ehcachemanager; importar org.apache.shiro.spring.lifecycleBeanPostProcessor; importar org.apache.shiro.spring.security.intercept.authorizationAttributesourCeadvisor; importar org.apache.shiro.spring.shirofilterFactoryBean; importar org.apache.shiro.web.mgt.defaultwebecurityManager; importar org.springframework.aop.framework.autoproxy.defaultAdvisorautoProxycreator; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; @Configuration public class Shiroconfiguration {Map estático privado <String, String> filterChainDefinitionMap = new LinkedHashMap <String, String> (); @Bean (name = "shirorealMimpl") public shirorealMimpl getShirorealM () {return new shirorealMimpl (); } @Bean (name = "shiroehcachemanager") public ehcachemanager getEhcachemanager () {ehcachemanager em = new ehcachemanager (); em.SetCachemanageRerConfigFile ("ClassPath: ehcache-hiro.xml"); devolver -os; } @Bean (name = "LifeCycleBeanPostProcessor") Public LifeCycleBeanPostProcessor getLifeCycleBeanPostProcessor () {return New LifeCycleBeanPostProcessor (); } @Bean Public DefaultAdVisoraUtoproxycreator GetDefaultAdVisoraUtoProxycreator () {DefaultAdvisorAutoProxycreator daap = new DefaultAdvisorAutoProxyCreator (); daap.setProxyTargetClass (true); retornar daap; } @Bean (name = "SecurityManager") public DefaultWebSecurityManager getDefaultWebSecurityManager () {DefaultWebUsCurityManager DWSM = new DefaultWebSecurityManager (); DWSM.SetRealM (getShirorealM ()); DWSM.SETCACHEMANAGER (GETEHCACHEMANAGER ()); retornar DWSM; } @Bean Public AuthorizationAttributesOrCeadVisor GetAuthorizationAttributesOrCeadvisor () {AuthorizationAttributesOrCeadVisor aasa = new AuthorizationAttributesourCeadvisor (); aasa.setSecurityManager (getDefaultWebSecurityManager ()); Retornar nova autorizaçãoAttributesourCeadvisor (); } @Bean (name = "shirofilter") public ShirofilterFactoryBean getShirofilterFactoryBean () {ShirofilterFactoryBean ShirofilterFactoryBean = new ShirofilterFactoryBean (); ShirofilterFactoryBean .SetSecurityManager (getDefaultWebSecurityManager ()); ShirofilterFactoryBean.SetLoginurl ("/Login"); ShirofilterFactoryBean.SetSuccessUrl ("/sa/index"); filterChainndefinitionMap.put ("/sa/**", "authc"); filterChainndefinitionMap.put ("/**", "anon"); ShirofilterFactoryBean .SetFilterChaindEfinitionMap (FilterChaIndEfinitionMap); Retornar ShirofilterFactoryBean; }}NOTA: O último é a inicialização do FilterChaIndEfinitionMap. O mapa é inicializado pelo LinkedHashmap. Ao aplicar, configure -o no arquivo de propriedades e inicialize -o. Depois de reescrevê -lo, tudo bem. Depois de reescrever, deve estar ok.
Não se esqueça de ir para ehcache-shiro.xml
<ehcache updateCheck = "false" name = "shirocache"> <defaultCache maxElementsInmemory = "10000" eternal = "false" timeToidleSeconds = "120" timeToliveSonds = "120" OverflowTodisk = "False" /"" DiskPerStEnTrev = "120".
NOTA: Consulte a documentação oficial da classe ShirorealMIMPL
Resumir
O acima é o método de configuração do Spring Boot Integrated Shiro introduzido a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!