成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Shiro實(shí)戰(zhàn)(三)Shiro授權(quán)(上)

sushi / 962人閱讀

摘要:授權(quán)三大要素是安全框架中最原子性的元素,它用來描述能夠做什么或者說能夠執(zhí)行什么樣的操作,比如刪除用戶查看用戶詳情查看商品詳情等。用戶就是我們之前提到的三大核心概念之一的。

在上篇Shiro認(rèn)證原理的最后,我們介紹了IniRealm是如何進(jìn)行認(rèn)證,本篇我們將介紹Shiro授權(quán)過程中的幾個(gè)概念以及Shiro編程式的授權(quán)操作,并通過常用的用戶、角色、權(quán)限授權(quán)模式來加深理解授權(quán)的過程。

1 授權(quán)三大要素

① Permissions
Permissions是Shiro安全框架中最原子性的元素,它用來描述能夠做什么或者說Subject能夠執(zhí)行什么樣的操作,比如刪除用戶、查看用戶詳情、查看商品詳情等。

② Roles
Roles大家應(yīng)該都很清楚了,某人具有某個(gè)角色,那么就對應(yīng)具有怎樣的行為或責(zé)任,也就是一個(gè)角色代表一組行為或責(zé)任。比如我們的后臺管理系統(tǒng),用戶的角色常常會(huì)有超級管理員、普通管理員之分,它們對應(yīng)的權(quán)限是不相同的,一般超級管理員會(huì)具有更多的權(quán)限。

③ 用戶
Users就是我們之前提到的Shiro三大核心概念之一的Subject。用戶與角色、權(quán)限的關(guān)系取決于我們的應(yīng)用,可以選擇直接將權(quán)限賦給用戶,也可以選擇將權(quán)限賦給角色,然后將角色賦給用戶,本篇我們將通過后者來講述。

1.2 授權(quán)常見操作

我們首先來回顧下INI配置文件,看下我們?nèi)绾瓮ㄟ^INI配置文件指定用戶、角色、權(quán)限

#對象以及對象的屬性,比如SecurityManager、Realms
[main]
#hashedMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher
#hashedMatcher.hashAlgorithmName = MD5

#riversRealm = com.rivers.study.RiversRealm
#riversRealm.credentialsMatcher = $hashedMatcher

#securityManager.realms = $riversRealm

#用戶名以及該用戶對應(yīng)的密碼以及角色
#username = password, role1, role2..., roleN
[users]
rivers = secret, admin
calabash = warrior, guest

#角色以及該角色可以擁有的權(quán)限
#rolename = permission1, permission2..., permissionN
[roles]
admin = UserManagerment:*
guest = UserManagerment:getUserInfo

[urls]

在上面的配置文件中,我們指定了兩個(gè)用戶rivers、calabash,用戶rivers的密碼是secret,具有admin角色,而用戶calabash的密碼是warrior,具有g(shù)uest角色;角色admin具有UserManagerment:*下的所有操作,而guest只有UserManagerment:getUserInfo權(quán)限。

① 角色判斷

那么我們?nèi)绾闻袛嘤脩簦⊿ubject)是否具有某種角色或者某些角色呢?Subject提供了hasRole*方法來幫助我們進(jìn)行處理。

Subject currentUser = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("calabash", "warrior");
currentUser.login(token);

if (currentUser.hasRole("admin")) {
    logger.info("用戶【" + currentUser.getPrincipal() + "】具有【admin】角色");
}

List roleList = new ArrayList();
roleList.add("admin");
roleList.add("guest");
boolean[] results = currentUser.hasRoles(roleList);
for (int i = 0; i < results.length; i++) {
    String tmp = results[i] ? "具有" : "不具有";
    logger.info("用戶【" + currentUser.getPrincipal() + tmp + "【" + roleList.get(i) + "】角色");
}

另外我們也可以通過hasAllRoles(Collection roleNames)來判斷用戶是否具有所有集合中指定的角色,都存在返回true,否則返回false。

如果我們不想做太多的邏輯處理,用戶存在角色就執(zhí)行,不存在就直接拋出異常,那么我們可以checkRole*系列方法。

currentUser.checkRole("admin");

② 權(quán)限判斷

那么我們?nèi)绾闻袛嘤脩簦⊿ubject)是否具有某種權(quán)限或者某些權(quán)限呢?Subject提供了isPermitted*方法來幫助我們進(jìn)行處理。

if (currentUser.isPermitted("UserManagerment:deleteUser")) {
    logger.info("用戶【" + currentUser.getPrincipal() + "】具有【UserManagerment:deleteUser】權(quán)限");
}

if (currentUser.isPermitted("UserManagerment:getUserInfo")) { 
    logger.info("用戶【" + currentUser.getPrincipal() + "】具有【UserManagerment:getUserInfo】權(quán)限");
}

Shiro還提供了其他的方法供我們使用,當(dāng)然也包括checkPermission*系列,有興趣的朋友可以去到Subject接口了解。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67465.html

相關(guān)文章

  • Shiro實(shí)戰(zhàn)(一) Shiro核心概念

    摘要:是什么是功能強(qiáng)大簡單易用的安全框架,核心功能包括認(rèn)證授權(quán)加密以及管理。的主要作用就是用來執(zhí)行認(rèn)證和授權(quán)的邏輯,它其實(shí)就相當(dāng)于與安全數(shù)據(jù)用戶賬號密碼角色權(quán)限之間進(jìn)行交互的橋梁。至此,的三個(gè)核心概念已經(jīng)介紹完畢。 1、Shiro是什么 Shiro是功能強(qiáng)大、簡單易用的Java安全框架,核心功能包括:認(rèn)證、授權(quán)、加密以及Session管理。Shiro的應(yīng)用范圍很廣泛,小型移動(dòng)端應(yīng)用、大型We...

    mdluo 評論0 收藏0
  • Shiro實(shí)戰(zhàn)(二)Shiro認(rèn)證原理

    摘要:認(rèn)證原理與認(rèn)證就是進(jìn)行身份確認(rèn)的過程,也就是用戶對應(yīng)中的需要提供證明來證實(shí)自己的身份。是的頂級抽象實(shí)現(xiàn)類,主要用于處理認(rèn)證操作,至于授權(quán)等操作則交由該類的子類去處理。至此,認(rèn)證的整體過程與底層邏輯已經(jīng)全部介紹完畢。 在上篇Shiro核心概念中,我們介紹了Shiro的三大核心概念:Subject、SecurityManager、Realms,并通過示例代碼QuickStart展示常用的認(rèn)...

    Channe 評論0 收藏0
  • Spring Security

    摘要:框架具有輕便,開源的優(yōu)點(diǎn),所以本譯見構(gòu)建用戶管理微服務(wù)五使用令牌和來實(shí)現(xiàn)身份驗(yàn)證往期譯見系列文章在賬號分享中持續(xù)連載,敬請查看在往期譯見系列的文章中,我們已經(jīng)建立了業(yè)務(wù)邏輯數(shù)據(jù)訪問層和前端控制器但是忽略了對身份進(jìn)行驗(yàn)證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護(hù)REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 評論0 收藏0
  • Shiro授權(quán)、整合Spirng、Shiro過濾器】

    摘要:表示對用戶資源進(jìn)行操作,相當(dāng)于,對所有用戶資源實(shí)例進(jìn)行操作。與整合,實(shí)際上的操作都是通過過濾器來干的。將安全管理器交由工廠來進(jìn)行管理。在過濾器鏈中設(shè)置靜態(tài)資源不攔截。 前言 本文主要講解的知識點(diǎn)有以下: Shiro授權(quán)的方式簡單介紹 與Spring整合 初始Shiro過濾器 一、Shiro授權(quán) 上一篇我們已經(jīng)講解了Shiro的認(rèn)證相關(guān)的知識了,現(xiàn)在我們來弄Shiro的授權(quán) Shir...

    ralap 評論0 收藏0
  • web開發(fā)安全框架中的Apache Shiro的應(yīng)用

    摘要:安全框架是目前為止作為登錄注冊最常用的框架,因?yàn)樗值膹?qiáng)大簡單,提供了認(rèn)證授權(quán)加密和會(huì)話管理等功能。本質(zhì)上是一個(gè)特定安全的。當(dāng)配置時(shí),必須指定至少一個(gè)用來進(jìn)行身份驗(yàn)證和或授權(quán)。提供了多種可用的來獲取安全相關(guān)的數(shù)據(jù)。 web開發(fā)安全框架中的Apache Shiro的應(yīng)用前階段就hadoop的分享了一些內(nèi)容,希望對新手入門的朋友有點(diǎn)幫助吧!對于hadoop新手入門的,還是比較推薦大快搜索...

    2json 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<