




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第SpringBoot整合Shiro的方法詳解//新方法shiro更新問題解決正常運(yùn)行
DefaultSecurityManagersecurityManager=newDefaultSecurityManager();
IniRealminiRealm=newIniRealm("classpath:shiro.ini");
securityManager.setRealm(iniRealm);
SecurityUtils.setSecurityManager(securityManager);
//NowthatasimpleShiroenvironmentissetup,let'sseewhatyoucando:
//獲取當(dāng)前用戶對象
SubjectcurrentUser=SecurityUtils.getSubject();
//通過當(dāng)前用戶拿到session
Sessionsession=currentUser.getSession();
session.setAttribute("someKey","aValue");
Stringvalue=(String)session.getAttribute("someKey");
if(value.equals("aValue")){
("subject=!["+value+"]");
//判斷當(dāng)前用戶是否被認(rèn)證
if(!currentUser.isAuthenticated()){
UsernamePasswordTokentoken=newUsernamePasswordToken("lonestarr","vespa");
token.setRememberMe(true);//設(shè)置記住我
try{
currentUser.login(token);
}catch(UnknownAccountExceptionuae){
("Thereisnouserwithusernameof"+token.getPrincipal());
}catch(IncorrectCredentialsExceptionice){
("Passwordforaccount"+token.getPrincipal()+"wasincorrect!");
}catch(LockedAccountExceptionlae){
("Theaccountforusername"+token.getPrincipal()+"islocked."+
"Pleasecontactyouradministratortounlockit.");
//最重要的一個異常,認(rèn)證異常
catch(AuthenticationExceptionae){
//unexpectedconditionerror
//saywhotheyare:
//printtheiridentifyingprincipal(inthiscase,ausername):
("User["+currentUser.getPrincipal()+"]loggedinsuccessfully.");
//testarole:
if(currentUser.hasRole("schwartz")){
("MaytheSchwartzbewithyou!");
}else{
("Hello,meremortal.");
//測試一個簡單的權(quán)限
//粗粒度的一個權(quán)限限制
if(currentUser.isPermitted("lightsaber:wield")){
("Youmayusealightsaberring.Useitwisely.");
}else{
("Sorry,lightsaberringsareforschwartzmastersonly.");
//a(verypowerful)InstanceLevelpermission:
if(currentUser.isPermitted("winnebago:drive:eagle5")){
("Youarepermittedto'drive'thewinnebagowithlicenseplate(id)'eagle5'."+
"Herearethekeys-havefun!");
}else{
("Sorry,youaren'tallowedtodrivethe'eagle5'winnebago!");
//注銷功能
currentUser.logout();
System.exit(0);
以上主要的幾個關(guān)鍵部分代碼:
對象初始化部分
//新方法shiro更新問題解決正常運(yùn)行
DefaultSecurityManagersecurityManager=newDefaultSecurityManager();
IniRealminiRealm=newIniRealm("classpath:shiro.ini");
securityManager.setRealm(iniRealm);
SecurityUtils.setSecurityManager(securityManager);
獲取當(dāng)前用戶
SubjectcurrentUser=SecurityUtils.getSubject();
判斷用戶是否被認(rèn)證
!currentUser.isAuthenticated()
判斷用戶是否具有什么角色
currentUser.hasRole("schwartz")
判斷用戶是否擁有權(quán)限
currentUser.isPermitted("lightsaber:wield")
注銷
currentUser.logout();
此時我們運(yùn)行啟動,項(xiàng)目如下,那么一個簡單的shiroquickStart就已經(jīng)啟動好了。
注意
shir最重要的三個部分:
subject用戶SecurityManager管理所有的用戶Realm連接數(shù)據(jù)
3.SpringBoot中集成
1.導(dǎo)入shiro相關(guān)依賴
!--
subject用戶
SecurityManager管理所有用戶
Realm連接數(shù)據(jù)
!--shiro與springboot--
dependency
groupIdorg.apache.shiro/groupId
artifactIdshiro-spring/artifactId
version1.6.0/version
/dependency
2.自定義UserRealm
packagecom.nuist.shirospringboot.config;
importorg.apache.shiro.authc.AuthenticationException;
importorg.apache.shiro.authc.AuthenticationInfo;
importorg.apache.shiro.authc.AuthenticationToken;
importorg.apache.shiro.authz.AuthorizationInfo;
importorg.apache.shiro.realm.AuthorizingRealm;
importorg.apache.shiro.subject.PrincipalCollection;
*@authorliuhuanhuan
*@version1.0
*@date2025/5/817:59
*@Description
publicclassUserRealmextendsAuthorizingRealm{
@Override
protectedAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionprincipalCollection){
System.out.println("執(zhí)行了=》授權(quán)doGetAuthorizationInfo方法");
returnnull;
@Override
protectedAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenauthenticationToken)throwsAuthenticationException{
System.out.println("執(zhí)行了-》認(rèn)證doGetAuthenticationInfo");
returnnull;
3.定義shiroConfig
packagecom.nuist.shirospringboot.config;
importorg.apache.shiro.spring.web.ShiroFilterFactoryBean;
importorg.apache.shiro.web.mgt.DefaultWebSecurityManager;
importorg.apache.shiro.web.session.mgt.DefaultWebSessionManager;
importorg.springframework.beans.factory.annotation.Qualifier;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
*@authorliuhuanhuan
*@version1.0
*@date2025/5/817:58
*@Description
@Configuration
publicclassShiroConfig{
//shiroFilterConfiguere
@Bean
publicShiroFilterFactoryBeangetShiroFilterFactoryBean(@Qualifier("getDefaultWebSecurityManager")DefaultWebSecurityManagersecurityManager){
ShiroFilterFactoryBeanshiroFilterFactoryBean=newShiroFilterFactoryBean();
//設(shè)置用戶管理器
shiroFilterFactoryBean.setSecurityManager(securityManager);
returnshiroFilterFactoryBean;
//defaultWebSecurity
//通過@Qualifier是USerRealm進(jìn)行綁定
@Bean
pu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政管理學(xué)分析方法試題及答案
- 2025年自考行政管理課程評價試題及答案
- 行政管理實(shí)施的現(xiàn)實(shí)案例分析試題及答案
- 2025年建筑工程考試策略與試題及答案
- 行政管理中的員工關(guān)系試題及答案
- 行政管理與可持續(xù)發(fā)展試題及答案路徑
- pc磚銷售合同范例
- 行政管理市政學(xué)知識關(guān)鍵信息試題及答案
- 行政管理中的可持續(xù)發(fā)展研究試題及答案
- 2025年建筑考試模擬試題及答案分析
- 政治審查表(模板)
- T∕CACM 1107-2018 中醫(yī)治未病實(shí)踐指南 亞健康中醫(yī)干預(yù)
- 數(shù)字貿(mào)易學(xué) 課件 第20、21章 數(shù)字絲綢之路與數(shù)字基礎(chǔ)設(shè)施、數(shù)字自由貿(mào)易與數(shù)字貿(mào)易壁壘
- 地理畢業(yè)生實(shí)習(xí)報(bào)告5000字范本2篇
- 養(yǎng)生酒行業(yè)分析
- (完整版)鋁合金門窗施工合同范本
- 新生兒音樂療法課件
- 2023年心理健康知識競賽題庫100題(含答案)
- 2024年國家電投集團(tuán)海南分公司招聘筆試參考題庫含答案解析
- 【中醫(yī)課件】經(jīng)絡(luò)學(xué)說
- 押運(yùn)員管理考核規(guī)定模版
評論
0/150
提交評論