1. 程式人生 > >Apache Shiro(四)——Shiro 標籤與許可權註解

Apache Shiro(四)——Shiro 標籤與許可權註解

一、Shiro 標籤

Shiro 提供了 JSTL 標籤用於在 JSP 頁面進行許可權控制,如根據登入使用者顯示相應的頁面按鈕。

guest 標籤:使用者沒有身份驗證時顯示相應資訊,即遊客訪問資訊。
在這裡插入圖片描述
user 標籤:使用者已經經過認證/記住我登入後顯示相應的資訊。
在這裡插入圖片描述
authenticated 標籤:使用者已經身份驗證通過,即Subject.login登入成功,不是記住我登入的。
在這裡插入圖片描述
notAuthenticated 標籤:使用者未進行身份驗證,即沒有呼叫Subject.login進行登入,包括記住我自動登入的也屬於未進行身份驗證。
在這裡插入圖片描述
pincipal 標籤顯示使用者身份資訊

,預設呼叫Subject.getPrincipal() 獲取,即 Primary Principal。
在這裡插入圖片描述
hasRole 標籤:如果當前 Subject 有角色將顯示 body 體內容:
在這裡插入圖片描述
hasAnyRoles 標籤:如果當前Subject有任意一個角色(或的關係)將顯示body體內容。
在這裡插入圖片描述
lacksRole:如果當前 Subject 沒有角色將顯示 body 體內容。
在這裡插入圖片描述
hasPermission:如果當前 Subject 有許可權將顯示 body 體內容。
在這裡插入圖片描述
lacksPermission:如果當前Subject沒有許可權將顯示body體內容。
在這裡插入圖片描述

二、許可權註解

@RequiresAuthentication

:表示當前Subject已經通過login進行了身份驗證;即 Subject. isAuthenticated() 返回 true

@RequiresUser:表示當前 Subject 已經身份驗證或者通過記住我登入的

@RequiresGuest:表示當前Subject沒有身份驗證或通過記住我登入過,即是遊客身份。

@RequiresRoles(value={“admin”, “user”}, logical=Logical.AND):表示當前 Subject 需要角色 admin 和user。

@RequiresPermissions (value={“user:a”, “user:b”},logical= Logical.OR)

:表示當前 Subject 需要許可權 user:a 或user:b。

三、自定義攔截器

通過自定義攔截器可以擴充套件功能,例如:動態url-角色/許可權訪問控制的實現、根據 Subject 身份資訊獲取使用者資訊繫結到 Request(即設定通用資料)、驗證碼驗證、線上使用者資訊的儲存等。