Artikel ini mencakup cara untuk mengintegrasikan Shiro ke dalam aplikasi berbasis musim semi.
Kompatibilitas Java Bean Shiro membuatnya ideal untuk mengonfigurasi melalui Spring XML atau mekanisme konfigurasi berbasis pegas lainnya. Aplikasi Shiro memerlukan contoh aplikasi Singleton Security Manager (SecuriyManager). Perhatikan bahwa ini belum tentu merupakan singleton statis, tetapi aplikasi hanya boleh menggunakan satu contoh, terlepas dari apakah itu singleton statis atau tidak.
1. Aplikasi mandiri
Berikut adalah cara termudah untuk mengaktifkan aplikasi Singleton Security Manager dalam aplikasi musim semi:
<!-Tentukan ranah yang terhubung ke sumber data aman backend:-> <bean id = "myrealm"> ... </bean> <bean id = "SecurityManager"> <!-Ini ditulis oleh satu aplikasi ranah. Jika ada beberapa ranah, Anda dapat menggunakan properti "Alam"-> <name properti = "ranah" ref = "myRealm"/> </ bean> <bean id = "lifeCycleBeanPostProcessor"/> <!-Untuk integrasi paling sederhana, seperti semua metode statis. Tapi jangan lakukan ini di aplikasi web. Lihat bagian "Aplikasi Web" di bawah ini. -> <Bean> <nama properti = "staticmethod" value = "org.apache.shiro.securityutils.setsecurityManager"/> <name properti = "argumen" ref = "securityManager"/> </ bean>
2. Aplikasi Web
Shiro memiliki dukungan besar untuk aplikasi web Spring. Dalam aplikasi web, semua permintaan web yang tersedia harus melewati filter Shiro. Filter ini sangat kuat dan memungkinkan untuk kustomisasi khusus dari rantai filter apa pun berdasarkan ekspresi jalur URL.
Sebelum Shiro 1.0, Anda harus menggunakan pendekatan hybrid dalam aplikasi web Spring untuk mendefinisikan filter Shiro. Semua properti konfigurasi ada di web.xml. Tetapi mendefinisikan SecurityManager di Spring.xml agak tidak ramah.
Sekarang, di Shiro 1.0 atau di atas, semua konfigurasi Shiro dilakukan di Spring XML, yang menyediakan mekanisme konfigurasi pegas yang lebih kuat.
Berikut adalah cara mengkonfigurasi Shiro dalam aplikasi web berbasis musim semi:
Web.xml
Selain beberapa tag pegas lainnya (ContextLoaderListener, log4jConfigListener, dll.), Filter dan pemetaan filter berikut juga ditentukan:
<!- Di ApplicationContext.xml, nama nama filter "Shirofilter" Bean Matches. --><filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param></filter>...<!-- Make sure Permintaan apa pun yang Anda inginkan dapat disaring. /* Menangkap semua permintaan. Biasanya, peta filter ini didefinisikan terlebih dahulu (sebelum yang lainnya), memastikan bahwa Shiro berfungsi dalam filter berikutnya dalam rantai filter:-> <STERFERTER-MAPPING> <STERFER-NAME> ShiroFilter </filter-name> <rats-pola>/*</url-pola> </filter-mapping>
ApplicationContext.xml
Dalam file ApplicationContext.xml, tentukan BeansManager dan "Shirofilter" yang berlaku untuk web, yang akan dirujuk dalam web.xml.
<bean id = "shirofilter"> <name properti = "SecurityManager" Ref = "SecurityManager"/> <!-Tentukan properti berikut sesuai dengan situasi spesifik: <nama properti = "loginurl" value = "/login.jsp"/<name properten = "notify ="/home. <!-Jika ada javax.servlet telah dinyatakan, properti "filter" tidak perlu-> <!-<name properti = "filter"> <util: peta> <entry tey = "analias" value-ref = "somefilter"/> </util: peta> </properti>-<nama properti = "somefilter"/uMAntion (peta> </properti>-<nama properti = "filterchindefinition/uMAnition (peta> </properti>-<Properti Nama Properti =" FilterChinDefinition/FOLTINIONS (MAPLET " Authc, Peran [admin]/docs/** = authc, perms [dokumen: baca]/** = authc </ value> </preate> </tact> <!- setiap javax.servlet.filter bean yang dapat didefinisikan dalam konteks, yang secara otomatis akan ditangkap oleh "Shirofilter" Bean di atas dan digunakan oleh "The" The Filterch, yang secara otomatis akan ditangkap oleh "Shirofilter" Bean di atas dan digunakan oleh "The" The "The" The Beanch ". Jika diperlukan, Anda dapat secara manual/eksplisit menambah peta "filter" shirofilter. -> <bean id = "somefilter"/> <bean id = "OtherFilter"> ... </sean> ... <bean id = "SecurityManager"> <!-Ini ditulis oleh satu aplikasi ranah. Jika ada beberapa ranah, Anda dapat menggunakan properti "Alam". -> <nama properti = "ranah" ref = "myrealm"/> <!-Dalam hal pengakuan, sesi wadah servlet berlaku. Setelah membongkar baris ini, gunakan sesi asli Shiro-> <!-<properti name = "sessionmode" value = "asli"/>-> </ bean> <bean id = "lifeCycleBeanPostProcessor"/> <!-Gunakan sumber data latar belakang dengan menyesuaikan subclass dari shiro realm-> <bean id = "myRealReal" myRealReal "myReal" myReal "myReal" MyReal "MyReal" MyReal "MyReal" MyReal "MyReal" MyReal "MyReal"
Shiro mengaktifkan anotasi
Dalam sebuah aplikasi, Anda mungkin perlu menggunakan anotasi Shiro untuk pemeriksaan keamanan (misalnya, @RequiresRole, @Requirespermission, dll. Ini membutuhkan integrasi AOP Shiro untuk memindai kelas beranotasi yang sesuai dan melakukan logika keamanan jika perlu. Berikut adalah cara mengaktifkan anotasi ini untuk menambahkan dua definisi kacang ini ke dalam aplikasi.
<bean depends-on = "lifecycleBeanPostProcessor"/> <bean> <name properti = "SecurityManager" ref = "SecurityManager"/> </bean>
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.