日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
權(quán)限管理使用Redis實(shí)現(xiàn)Shiro權(quán)限管理(redis的shiro)

權(quán)限管理使用Redis實(shí)現(xiàn)Shiro權(quán)限管理

成都創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們?cè)趧?chuàng)意設(shè)計(jì),成都全網(wǎng)營銷到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗(yàn)。我們擅長傾聽企業(yè)需求,挖掘用戶對(duì)產(chǎn)品需求服務(wù)價(jià)值,為企業(yè)制作有用的創(chuàng)意設(shè)計(jì)體驗(yàn)。核心團(tuán)隊(duì)擁有超過十載以上行業(yè)經(jīng)驗(yàn),涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)南充服務(wù)器托管、成都app軟件開發(fā)、手機(jī)移動(dòng)建站、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)整合營銷。

隨著互聯(lián)網(wǎng)和信息技術(shù)的高速發(fā)展,各類應(yīng)用的用戶數(shù)量不斷增加,對(duì)系統(tǒng)的安全性和穩(wěn)定性提出了更高的要求。而權(quán)限管理作為安全保障的重要措施,也變得越來越重要。Shiro是一個(gè)在Java應(yīng)用中提供身份驗(yàn)證、授權(quán)、加密等安全功能的框架,是當(dāng)前最流行的安全框架之一。而Redis是一個(gè)開源的高性能鍵值存儲(chǔ)數(shù)據(jù)庫,常用于緩存和分布式存儲(chǔ)。本文將介紹如何使用Redis實(shí)現(xiàn)Shiro權(quán)限管理。

一、Shiro框架的基本原理

Shiro框架采用了類似于過濾器(Filter)的模式,對(duì)請(qǐng)求進(jìn)行攔截和處理。 當(dāng)請(qǐng)求進(jìn)入應(yīng)用程序,Shiro會(huì)從應(yīng)用程序的ThreadLocal中獲取當(dāng)前用戶,然后判斷當(dāng)前用戶是否具有訪問該url地址的權(quán)限。如果用戶具有權(quán)限,則可以繼續(xù)執(zhí)行該請(qǐng)求,否則將跳轉(zhuǎn)到相應(yīng)的錯(cuò)誤界面。

二、Redis的基本原理

Redis是一個(gè)內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),支持多種數(shù)據(jù)結(jié)構(gòu),如字符串、散列表、列表、集合等,并可持久化到硬盤中。Redis主要用于緩存、消息隊(duì)列、分布式鎖等場(chǎng)景。Redis可以通過使用分布式緩存來提高應(yīng)用程序的性能和可伸縮性。

三、Shiro權(quán)限管理中使用Redis

在Shiro權(quán)限管理中,可以通過使用Redis實(shí)現(xiàn)對(duì)用戶權(quán)限信息的緩存,以提高系統(tǒng)的性能和穩(wěn)定性。具體實(shí)現(xiàn)步驟如下:

1.啟動(dòng)Redis服務(wù)

在本機(jī)安裝Redis,并啟動(dòng)Redis服務(wù)。

2.配置Shiro緩存管理器

在Shiro配置文件中,配置Redis緩存管理器,如下所示:
















3.配置Shiro權(quán)限過濾器

在Shiro配置文件中,配置Shiro權(quán)限過濾器,定義需要權(quán)限認(rèn)證的url地址,如下所示:








/**=authc


4.配置Shiro Realm

在Shiro Realm中,實(shí)現(xiàn)對(duì)用戶權(quán)限信息的查詢和緩存。在查詢用戶權(quán)限信息時(shí),首先從Redis緩存中查找,如果不存在,則從數(shù)據(jù)庫中查找。如果查找到用戶權(quán)限信息,則將其緩存到Redis中。具體實(shí)現(xiàn)代碼如下:

public class UserRealm extends AuthorizingRealm {
@Autowired
private IUserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
String username = (String) principals.getPrimaryPrincipal();
List permissions = userService.findPermissionsByUsername(username);
Set permissionSet = new HashSet();
for (Permission permission : permissions) {
permissionSet.add(permission.getCode());
}
authorizationInfo.setStringPermissions(permissionSet);
return authorizationInfo;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {
String username = (String) token.getPrincipal();
User user = userService.findByUsername(username);
if (user != null) {
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
}
return null;
}

@Override
public void onLogout(PrincipalCollection principals) {
super.onLogout(principals);
String username = (String) principals.getPrimaryPrincipal();
userService.deleteUserCache(username);
}
}

在以上代碼中,通過@Autowired注解自動(dòng)注入U(xiǎn)serService服務(wù),實(shí)現(xiàn)了對(duì)用戶權(quán)限信息緩存的查詢和緩存。

5.測(cè)試運(yùn)行

在以上配置完成后,使用瀏覽器訪問系統(tǒng)中的url地址,可以看到系統(tǒng)先從Redis緩存中查詢用戶權(quán)限信息,如果不存在,則從數(shù)據(jù)庫中查詢,查詢完成后將其緩存到Redis中,在下次訪問相同的url地址時(shí),系統(tǒng)直接從Redis緩存中查詢用戶權(quán)限信息,以達(dá)到提高系統(tǒng)性能和穩(wěn)定性的目的。

四、總結(jié)

本文介紹了如何使用Redis實(shí)現(xiàn)Shiro權(quán)限管理,通過使用Redis緩存管理器和Shiro Realm實(shí)現(xiàn)用戶權(quán)限信息的緩存,以提高系統(tǒng)的性能和穩(wěn)定性。在實(shí)際項(xiàng)目中,可以通過使用Redis集群,以提高系統(tǒng)的可伸縮性和容錯(cuò)性。

創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220


網(wǎng)站標(biāo)題:權(quán)限管理使用Redis實(shí)現(xiàn)Shiro權(quán)限管理(redis的shiro)
分享地址:http://www.5511xx.com/article/ccidscs.html