SpringBoot整合Shiro的環(huán)境搭建教程
SpringBoot整合Shiro環(huán)境搭建
導入 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
實際操作中對象創(chuàng)建的順序 : realm -> securityManager -> subject
第一步:編寫自定義的 realm ,需要繼承 AuthorizingRealm,并且重寫認證和授權(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í)行了認證方法"); return null; } }
注冊我們自己的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 對象傳遞過來 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(); // 設置安全管理器 // 需要關(guān)聯(lián) securityManager ,通過參數(shù)把 securityManager 對象傳遞過來 subject.setSecurityManager(defaultWebSecurityManager); return subject; }
完整配置類:
@Configuration public class ShiroConfig { @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("SecurityManager") DefaultWebSecurityManager defaultWebSecurityManager) { ShiroFilterFactoryBean subject = new ShiroFilterFactoryBean(); // 設置安全管理器 // 需要關(guān)聯(lián) securityManager ,通過參數(shù)把 securityManager 對象傳遞過來 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 對象傳遞過來 securityManager.setRealm(userRealm); return securityManager; } @Bean public UserRealm userRealm() { return new UserRealm(); } }
現(xiàn)在,我們來實現(xiàn)一個簡單的頁面攔截測試一下吧!
編寫兩個頁面、在templates目錄下新建一個 user 目錄 add.html update.html:
頁面內(nèi)容可以自定義:
在index頁面上,增加跳轉(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)到頁面的controller:
@RequestMapping("/user/add") public String toAdd() { return "user/add"; } @RequestMapping("/user/update") public String toUpdate() { return "user/update"; }
之后運行無誤即可配置成功!
到此這篇關(guān)于SpringBoot整合Shiro的環(huán)境搭建教程的文章就介紹到這了,更多相關(guān)SpringBoot整合Shiro內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java設置token有效期的5個應用場景(雙token實現(xiàn))
Token最常見的應用場景之一就是身份驗證,本文主要介紹了Java設置token有效期的5個應用場景(雙token實現(xiàn)),具有一定的參考價值,感興趣的可以來了解一下2024-04-04Java中對象?和?json?互轉(zhuǎn)四種方式?json-lib、Gson、FastJson、Jackson
這篇文章主要介紹了Java中對象?和?json?互轉(zhuǎn)?四種方式?json-lib、Gson、FastJson、Jackson,需要的朋友可以參考下2023-11-11SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小
這篇文章主要介紹了SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03java發(fā)送HttpClient請求及接收請求結(jié)果過程的簡單實例
下面小編就為大家?guī)硪黄猨ava發(fā)送HttpClient請求及接收請求結(jié)果過程的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11