SpringBoot整合Shiro的環(huán)境搭建教程
SpringBoot整合Shiro環(huán)境搭建
導(dǎo)入 SpringBoot 和 Shiro 整合包的依賴:
<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.10.1</version>
</dependency>
下面是編寫(xiě)配置文件:
@Configuration
public class ShiroConfig {
}
Shiro 三大要素
- subject -> ShiroFilterFactoryBean
- securityManager -> DefaultWebSecurityManager
- realm
實(shí)際操作中對(duì)象創(chuàng)建的順序 : realm -> securityManager -> subject
第一步:編寫(xiě)自定義的 realm ,需要繼承 AuthorizingRealm,并且重寫(xiě)認(rèn)證和授權(quán)方法:
public class UserRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("執(zhí)行了授權(quán)方法");
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("執(zhí)行了認(rèn)證方法");
return null;
}
}
注冊(cè)我們自己的realm到配置類里:
@Configuration
public class ShiroConfig {
@Bean
public UserRealm userRealm(){
return new UserRealm();
}
}
第二步:創(chuàng)建 securityManager,并加載realm:
@Bean(name = "SecurityManager")
public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 需要關(guān)聯(lián)自定義的 Realm,通過(guò)參數(shù)把 Realm 對(duì)象傳遞過(guò)來(lái)
securityManager.setRealm(userRealm);
return securityManager;
}
第三步:創(chuàng)建 subject,并關(guān)聯(lián) securityManager:
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean();
// 設(shè)置安全管理器
// 需要關(guān)聯(lián) securityManager ,通過(guò)參數(shù)把 securityManager 對(duì)象傳遞過(guò)來(lái)
subject.setSecurityManager(defaultWebSecurityManager);
return subject;
}
完整配置類:
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean();
// 設(shè)置安全管理器
// 需要關(guān)聯(lián) securityManager ,通過(guò)參數(shù)把 securityManager 對(duì)象傳遞過(guò)來(lái)
subject.setSecurityManager(defaultWebSecurityManager);
return subject;
}
@Bean(name = "SecurityManager")
public DefaultWebSecurityManager getDefaultWebSecurity(@Qualifier("userRealm") UserRealm userRealm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 需要關(guān)聯(lián)自定義的 Realm,通過(guò)參數(shù)把 Realm 對(duì)象傳遞過(guò)來(lái)
securityManager.setRealm(userRealm);
return securityManager;
}
@Bean
public UserRealm userRealm() {
return new UserRealm();
}
}
現(xiàn)在,我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的頁(yè)面攔截測(cè)試一下吧!
編寫(xiě)兩個(gè)頁(yè)面、在templates目錄下新建一個(gè) user 目錄 add.html update.html:
頁(yè)面內(nèi)容可以自定義:

在index頁(yè)面上,增加跳轉(zhuǎn)鏈接功能:
<a th:href="@{/user/add}" rel="external nofollow" >add</a>
<hr/>
<a th:href="@{/user/update}" rel="external nofollow" >update</a>
編寫(xiě)跳轉(zhuǎn)到頁(yè)面的controller:
@RequestMapping("/user/add")
public String toAdd() {
return "user/add";
}
@RequestMapping("/user/update")
public String toUpdate() {
return "user/update";
}
之后運(yùn)行無(wú)誤即可配置成功!
到此這篇關(guān)于SpringBoot整合Shiro的環(huán)境搭建教程的文章就介紹到這了,更多相關(guān)SpringBoot整合Shiro內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java讀取JSON文件的多種實(shí)現(xiàn)方式
這篇文章主要介紹了java讀取JSON文件的多種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑
這篇文章主要介紹了使用IDEA工具配置和運(yùn)行vue項(xiàng)目及遇到的坑,需要的朋友可以參考下2018-09-09
windows下使用 intellij idea 編譯 kafka 源碼環(huán)境
這篇文章主要介紹了使用 intellij idea 編譯 kafka 源碼的環(huán)境,本文是基于windows下做的項(xiàng)目演示,需要的朋友可以參考下2021-10-10
mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)
這篇文章主要介紹了mybatis的insert插入后獲取自增id的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10
AndroidQ沙盒機(jī)制之分區(qū)存儲(chǔ)適配
這篇文章主要介紹了AndroidQ沙盒機(jī)制之分區(qū)存儲(chǔ)適配,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Spring @CrossOrigin 注解原理實(shí)現(xiàn)
這篇文章主要介紹了Spring @CrossOrigin 注解原理實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

