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

首頁 > 網站 > Apache > 正文

Apache Shiro 使用手冊(三) Shiro授權

2024-08-27 18:23:22
字體:
來源:轉載
供稿:網友
授權即訪問控制,它將判斷用戶在應用程序中對資源是否擁有相應的訪問權限

如,判斷一個用戶有查看頁面的權限,編輯數據的權限,擁有某一按鈕的權限,以及是否擁有打印的權限等等。

一、授權的三要素

授權有著三個核心元素:權限、角色和用戶。

權限

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

而我們通過權限聲明僅僅能了解這個權限可以在應用程序中做些什么,而不能確定誰擁有此權限。
于是,我們就需要在應用程序中對用戶和權限建立關聯。
通常的做法就是將權限分配給某個角色,然后將這個角色關聯一個或多個用戶。

權限聲明及粒度

Shiro權限聲明通常是使用以冒號分隔的表達式。就像前文所講,一個權限表達式可以清晰的指定資源類型,允許的操作,可訪問的數據。同時,Shiro權限表達式支持簡單的通配符,可以更加靈活的進行權限設置。
下面以實例來說明權限表達式。
可查詢用戶數據
User:view
可查詢或編輯用戶數據
User:view,edit
可對用戶數據進行所有操作
User:* 或 user
可編輯id為123的用戶數據
User:edit:123

角色

Shiro支持兩種角色模式:
1、傳統角色:一個角色代表著一系列的操作,當需要對某一操作進行授權驗證時,只需判斷是否是該角色即可。這種角色權限相對簡單、模糊,不利于擴展。
2、權限角色:一個角色擁有一個權限的集合。授權驗證時,需要判斷當前角色是否擁有該權限。這種角色權限可以對該角色進行詳細的權限描述,適合更復雜的權限設計。
下面將詳細描述對兩種角色模式的授權實現。

二、授權實現

Shiro支持三種方式實現授權過程:
編碼實現
注解實現
JSP Taglig實現
1、基于編碼的授權實現

1.1基于傳統角色授權實現
當需要驗證用戶是否擁有某個角色時,可以調用Subject 實例的hasRole*方法驗證。


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


相關驗證方法如下: 
Subject方法描述hasRole(String roleName)當用戶擁有指定角色時,返回truehasRoles(List<String> roleNames)按照列表順序返回相應的一個boolean值數組hasAllRoles(Collection<String> roleNames)如果用戶擁有所有指定角色時,返回true

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋中市| 蒲江县| 珲春市| 阿拉尔市| 枣阳市| 密山市| 佛教| 红河县| 水城县| 宜兰县| 明星| 通山县| 玉溪市| 富锦市| 蓝田县| 五峰| 嵩明县| 平泉县| 务川| 滁州市| 临洮县| 仙游县| 岳普湖县| 灵山县| 临朐县| 义马市| 德阳市| 湘潭市| 石狮市| 蒙城县| 延安市| 营口市| 克山县| 甘洛县| 师宗县| 霍州市| 博兴县| 沿河| 德惠市| 池州市| 临西县|