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>
下面是編寫配置文件:
@Configuration public class ShiroConfig { }
Shiro 三大要素
- subject -> ShiroFilterFactoryBean
- securityManager -> DefaultWebSecurityManager
- realm
實(shí)際操作中對(duì)象創(chuàng)建的順序 : realm -> securityManager -> subject
第一步:編寫自定義的 realm ,需要繼承 AuthorizingRealm,并且重寫認(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,通過參數(shù)把 Realm 對(duì)象傳遞過來(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 ,通過參數(shù)把 securityManager 對(duì)象傳遞過來(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 ,通過參數(shù)把 securityManager 對(duì)象傳遞過來(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,通過參數(shù)把 Realm 對(duì)象傳遞過來(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è)試一下吧!
編寫兩個(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>
編寫跳轉(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)文章
分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序
這篇文章主要介紹了分布式面試問題:分布式消息隊(duì)列如何解決消息重復(fù)并保證消息順序面試問題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問題
這篇文章主要介紹了MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Java設(shè)置token有效期的5個(gè)應(yīng)用場(chǎng)景(雙token實(shí)現(xiàn))
Token最常見的應(yīng)用場(chǎng)景之一就是身份驗(yàn)證,本文主要介紹了Java設(shè)置token有效期的5個(gè)應(yīng)用場(chǎng)景(雙token實(shí)現(xiàn)),具有一定的參考價(jià)值,感興趣的可以來(lái)了解一下2024-04-04Java中對(duì)象?和?json?互轉(zhuǎn)四種方式?json-lib、Gson、FastJson、Jackson
這篇文章主要介紹了Java中對(duì)象?和?json?互轉(zhuǎn)?四種方式?json-lib、Gson、FastJson、Jackson,需要的朋友可以參考下2023-11-11JavaFX實(shí)現(xiàn)簡(jiǎn)易時(shí)鐘效果(二)
這篇文章主要為大家詳細(xì)介紹了JavaFX實(shí)現(xiàn)簡(jiǎn)易時(shí)鐘效果的第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小
這篇文章主要介紹了SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03java發(fā)送HttpClient請(qǐng)求及接收請(qǐng)求結(jié)果過程的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇java發(fā)送HttpClient請(qǐng)求及接收請(qǐng)求結(jié)果過程的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-11-11