第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Spring Security hasRole() 用于未經(jīng)身份驗(yàn)證的用戶,考慮角色層次結(jié)構(gòu)

Spring Security hasRole() 用于未經(jīng)身份驗(yàn)證的用戶,考慮角色層次結(jié)構(gòu)

UYOU 2023-04-19 10:35:43
我的 Spring Boot 2 + Spring Security 應(yīng)用程序中有一個(gè)角色層次結(jié)構(gòu):@Beanpublic RoleHierarchy roleHierarchy() {    var rh = new RoleHierarchyImpl();    rh.setHierarchy("ROLE_ADMIN > ROLE_USER and ...");    return rh;}現(xiàn)在我(作為管理員)想代表另一個(gè)用戶創(chuàng)建一個(gè)實(shí)體,但我應(yīng)該檢查該用戶是否具有基于上述層次結(jié)構(gòu)的特定權(quán)限。我知道可以為當(dāng)前經(jīng)過身份驗(yàn)證的用戶調(diào)用 spring security hasRole() ,但就我而言,我想要授權(quán)的用戶未經(jīng)過身份驗(yàn)證?,F(xiàn)在,我可以檢查用戶是否具有該特定權(quán)限:public boolean hasAuthority(User user, String authority) {    return user.getAuthorities()            .stream()            .anyMatch(grantedAuthority -> grantedAuthority.getName().equals(authority));}但這樣一來,相當(dāng)長的層次結(jié)構(gòu)將被忽略。如果有任何幫助,我將不勝感激。
查看完整描述

1 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

您可以使用角色層次結(jié)構(gòu)

Collection<??extends?GrantedAuthority>?getReachableGrantedAuthorities(Collection<??extends?GrantedAuthority>?authorities)

返回所有可達(dá)權(quán)限的數(shù)組。

可達(dá)權(quán)限是直接分配的權(quán)限加上在角色層次結(jié)構(gòu)中可以(傳遞地)從它們到達(dá)的所有權(quán)限。

示例:角色層次結(jié)構(gòu):ROLE_A > ROLE_B 和 ROLE_B > ROLE_C。
直接分配的權(quán)限:ROLE_A。
可達(dá)權(quán)限:ROLE_A、ROLE_B、ROLE_C。

參數(shù):

authorities- 直接指定的權(quán)限列表。

退貨:

給定指定權(quán)限的所有可訪問權(quán)限的列表。

您修改后的代碼:

public?boolean?hasAuthority(User?user,?String?authority)?{?
???return?roleHierarchy()
????????.getReachableGrantedAuthorities(user.getAuthorities())
????????.stream()
????????.anyMatch(grantedAuthority?->?grantedAuthority.getName().equals(authority));
}


查看完整回答
反對 回復(fù) 2023-04-19
  • 1 回答
  • 0 關(guān)注
  • 132 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)