国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > Apache > 正文

Apache Shiro 使用手冊(cè)(三) Shiro授權(quán)

2024-08-27 18:26:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如,判斷一個(gè)用戶有查看頁(yè)面的權(quán)限,編輯數(shù)據(jù)的權(quán)限,擁有某一按鈕的權(quán)限,以及是否擁有打印的權(quán)限等等。

一、授權(quán)的三要素

授權(quán)有著三個(gè)核心元素:權(quán)限、角色和用戶。

權(quán)限

權(quán)限是Apache Shiro安全機(jī)制最核心的元素。它在應(yīng)用程序中明確聲明了被允許的行為和表現(xiàn)。一個(gè)格式良好好的權(quán)限聲明可以清晰表達(dá)出用戶對(duì)該資源擁有的權(quán)限。
大多數(shù)的資源會(huì)支持典型的CRUD操作(create,read,update,delete),但是任何操作建立在特定的資源上才是有意義的。因此,權(quán)限聲明的根本思想就是建立在資源以及操作上。

而我們通過(guò)權(quán)限聲明僅僅能了解這個(gè)權(quán)限可以在應(yīng)用程序中做些什么,而不能確定誰(shuí)擁有此權(quán)限。
于是,我們就需要在應(yīng)用程序中對(duì)用戶和權(quán)限建立關(guān)聯(lián)。
通常的做法就是將權(quán)限分配給某個(gè)角色,然后將這個(gè)角色關(guān)聯(lián)一個(gè)或多個(gè)用戶。

權(quán)限聲明及粒度

Shiro權(quán)限聲明通常是使用以冒號(hào)分隔的表達(dá)式。就像前文所講,一個(gè)權(quán)限表達(dá)式可以清晰的指定資源類(lèi)型,允許的操作,可訪問(wèn)的數(shù)據(jù)。同時(shí),Shiro權(quán)限表達(dá)式支持簡(jiǎn)單的通配符,可以更加靈活的進(jìn)行權(quán)限設(shè)置。
下面以實(shí)例來(lái)說(shuō)明權(quán)限表達(dá)式。
可查詢用戶數(shù)據(jù)
User:view
可查詢或編輯用戶數(shù)據(jù)
User:view,edit
可對(duì)用戶數(shù)據(jù)進(jìn)行所有操作
User:* 或 user
可編輯id為123的用戶數(shù)據(jù)
User:edit:123

角色

Shiro支持兩種角色模式:
1、傳統(tǒng)角色:一個(gè)角色代表著一系列的操作,當(dāng)需要對(duì)某一操作進(jìn)行授權(quán)驗(yàn)證時(shí),只需判斷是否是該角色即可。這種角色權(quán)限相對(duì)簡(jiǎn)單、模糊,不利于擴(kuò)展。
2、權(quán)限角色:一個(gè)角色擁有一個(gè)權(quán)限的集合。授權(quán)驗(yàn)證時(shí),需要判斷當(dāng)前角色是否擁有該權(quán)限。這種角色權(quán)限可以對(duì)該角色進(jìn)行詳細(xì)的權(quán)限描述,適合更復(fù)雜的權(quán)限設(shè)計(jì)。
下面將詳細(xì)描述對(duì)兩種角色模式的授權(quán)實(shí)現(xiàn)。

二、授權(quán)實(shí)現(xiàn)

Shiro支持三種方式實(shí)現(xiàn)授權(quán)過(guò)程:
編碼實(shí)現(xiàn)
注解實(shí)現(xiàn)
JSP Taglig實(shí)現(xiàn)
1、基于編碼的授權(quán)實(shí)現(xiàn)

1.1基于傳統(tǒng)角色授權(quán)實(shí)現(xiàn)
當(dāng)需要驗(yàn)證用戶是否擁有某個(gè)角色時(shí),可以調(diào)用Subject 實(shí)例的hasRole*方法驗(yàn)證。


復(fù)制代碼 代碼如下:

Subject currentUser = SecurityUtils.getSubject();
if (currentUser.hasRole("administrator")) {
    //show the admin button
} else {
    //don't show the button?  Grey it out?
}


相關(guān)驗(yàn)證方法如下: 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高台县| 枣阳市| 宁乡县| 柳州市| 桑植县| 尼勒克县| 珲春市| 阳江市| 陇西县| 胶南市| 怀仁县| 荆门市| 盈江县| 锡林浩特市| 榆树市| 东乡县| 韶山市| 永康市| 衡东县| 宜昌市| 仙桃市| 和龙市| 连南| 德令哈市| 五河县| 沐川县| 铁岭县| 通山县| 广东省| 三门峡市| 通化县| 九寨沟县| 于都县| 景德镇市| 光山县| 九江市| 额敏县| 泰兴市| 江油市| 周至县| 邢台县|