Spring Boot menyediakan kerangka otentikasi bawaan, dan juga menyediakan ekstensi konfigurasi Javaconfig yang disesuaikan. Spring-scurity juga merupakan kerangka kerja yang sangat baik, tetapi saya terbiasa menggunakan kerangka kerja Apache Shiro. Selain itu, proyek asli adalah kerangka kerja Shiro yang terintegrasi. Saya online untuk menemukan metode konfigurasi, tetapi saya tidak dapat menemukan metode konfigurasi yang lengkap, jadi saya memutuskan untuk melakukannya sendiri dan memiliki cukup makanan dan pakaian!
Untuk mengintegrasikan kerangka kerja lain di Spring Boot, Anda harus terlebih dahulu memahami metode Spring Javaconfig. Anda juga dapat mengonfigurasi modul lain menggunakan metode ini. Lebih sedikit omong kosong, mulai. . .
Sebelum memulai, Anda perlu mengimpor dependensi Maven (Shiro-Web Opsional):
<dependency> <GroupId> org.apache.shiro </groupid> <ArTifactId> shiro-core </stifactid> <version> $ {shiro.version} </version> </dependency> <ArtiFAcid> <Groupid> org.apache.shiro </groupid> <ArtiFacTID> Shiro-org.apache. <version> $ {shiro.version} </version> </dependency> <dependency> <groupid> org.apache.shiro </proupid> <ArtifactId> Shiro-SPRING </artifactid> <version> $ {Shiro.version} </version> </Dependency> <version> <version> <voupeid> </version./org <ArTifactId> shiro-ehcache </artifactid> <version> $ {shiro.version} </version> </dependency>Konfigurasi pegas terintegrasi Shiro asli diambil, sebagai berikut:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans.xsd" default-lazy-init="true"> <description>Shiro security configuration comes from: http://shiro.apache.org/spring.html </description> <bean id = "SecurityManager"> <!- aplikasi ranah tunggal. Jika Anda memiliki beberapa ranah, gunakan properti 'Ranah' sebagai gantinya. --> <property name="realm" ref="ShiroRealmImpl" /> <property name="cacheManager" ref="shiroEhcacheManager" /> </bean> <!-- Define the realm you want to use to connect to your back-end security datasource: --> <bean id="ShiroRealmImpl" /> <bean id="shiroFilter"> <property name="securityManager" Ref = "SecurityManager" /> <name properti = "loginUrl" value = " /login" /> <!-halaman yang tidak memiliki izin atau lompatan setelah kegagalan-> <nama properti = "SUCCESTURL" value = " /SA /INDEX" /<Dokumen Properti = "FilterChainDefinitions"> <!-, Role [Admin], ADMAN: AUTHOUS: DOKUSI: DOKUSI--DOKMENT /BADI--ADIMER /BADI- /BADI,> <!-<! /Peran/Edit/* = Perms [Peran: Edit]/Role/Save = Perms [Peran: Edit]/Role/List = Perms [Role: View]->/SA/** = authc/** = anon </ value> </property> </tean> <!-Otorisasi pengguna/Otentikasi Cache Informasi, menggunakan Ehcache Cache-> <bean> <! name="cacheManagerConfigFile" value="classpath:ehcache-shiro.xml" /> </bean> <!-- Ensure that the bean execution of Shiro's internal lifecycle function is implemented --> <bean id="lifecycleBeanPostProcessor" /> <!-- AOP method-level permission check--> <!-- Enable Shiro Annotations for Spring-configured kacang. Only run after --> <!-- the lifecycleBeanProcessor has run: --> <bean depends-on="lifecycleBeanPostProcessor"> <property name="proxyTargetClass" value="true" /> </bean> <bean> <property name="securityManager" ref="securityManager" /> </bean> </beans>
Ada begitu banyak kelas, dan tidak ada cara untuk mengkonfigurasinya satu per satu. File JavaConfig adalah sebagai berikut:
impor java.util.linkedhashmap; impor java.util.map; impor org.apache.shiro.cache.ehcache.ehcachemanager; impor org.apache.shiro.spring.lifecycleBeanPostProcessor; impor org.apache.shiro.spring.security.interceptor.authorizationAttributeSourceadVisor; impor org.apache.shiro.spring.shirofilterfactorybean; impor org.apache.shiro.web.mgt.defaultwebsecurityManager; impor org.springframework.aop.framework.autoproxy.defaultAdvisorAutoproxyCreator; impor org.springframework.context.annotation.bean; impor org.springframework.context.annotation.configuration; @Configuration Public Class ShiroConfiguration {Private Static Map <String, String> FilterChainDefinitionMap = new LinkedHashMap <String, String> (); @Bean (name = "shirorealmimpl") public shireorealmImpl getshirorealm () {return new ShiroreAlMImpl (); } @Bean (name = "Shiroehcachemanager") Publik ehcachemanager getehcachemanager () {ehcachemanager em = ehcachemanager baru (); em.setCachemanAgerConfigFile ("classpath: ehcache-shiro.xml"); mengembalikan mereka; } @Bean (name = "LifeCycleBeanPostProcessor") Publik LifeCycleBeanPostProcessor getlifecycleBeanPostProcessor () {return LifeCycleBeanPostProcessor () baru; } @Bean Public DefaultAdvisorAutOproxyCreator GetDefaultAdvisorAutOproxyCreator () {defaultAdvisorAutoproxyCreator daap = DefaultAdvisorAutoproxyCreator () baru; daap.setProxyTargetClass (true); mengembalikan daap; } @Bean (name = "SecurityManager") Public DefaultWebSecurityManager GetDefaultWebSecurityManager () {DefaultWebSecurityManager DWSM = New DefaultWebSecurityManager (); dwsm.setrealm (getshirorealm ()); dwsm.setCachemanager (getehcachemanager ()); mengembalikan DWSM; } @Bean Otorisasi PublicTributSourCeadVisor GetAuthorizationAttributSourCeadVisor () {OtorationAttributSourCeadVisor AASA = Otorisasi baruTributSourCeadVisor (); AASA.SetSecurityManager (getDefaultWebSecurityManager ()); mengembalikan otorisasi baru yang bersambung (); } @Bean (name = "shirofilter") public shirofilterfactorybean getshirofilterfactorybean () {shirofilterfactorybean shirofilterfactorybean = baru shirofilterfactorybean (); shirofilterfactorybean .setsecurityManager (getDefaultWebSecurityManager ()); shirofilterfactorybean.setloginurl ("/login"); shirofilterfactorybean.setsuccessurl ("/SA/index"); filterChainDefinitionMap.put ("/sa/**", "authc"); filterChainDefinitionMap.put ("/**", "anon"); shirofilterfactorybean .setFilterChainDefinitionMap (filterChainDefinitionMap); kembalikan shirofilterfactorybean; }}CATATAN: Yang terakhir adalah inisialisasi filterChainDefinitionMap. Peta diinisialisasi oleh LinkedHashMap. Saat Anda mendaftar, konfigurasikan ke dalam file properti, lalu inisialisasi. Setelah menulis ulang, itu akan baik -baik saja. Setelah ditulis ulang, seharusnya baik -baik saja.
Jangan lupa untuk pergi ke ehcache-shiro.xml
<ehcache updateCheck = "false" name = "shirocache"> <defaultcache maxeLementsInmemory = "10000" Eternal = "false" TimeToidleseconds = "120" timetoliveseconds = "120" overflowTodisk = "false" diskpersistent = "false" false "false" false "false" false "false" 120 "
Catatan: Silakan merujuk ke dokumentasi resmi untuk kelas ShirorealMIMPL
Meringkaskan
Di atas adalah metode konfigurasi Shiro Spring Boot yang terintegrasi yang diperkenalkan kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!