Shiro授权流程
1,授權(quán)中涉及的一些概念
[1]授權(quán):訪問控制,即在應(yīng)用中認(rèn)證用戶能否訪問的系統(tǒng)資源(如一個頁面,一個按鈕等)。
[2]資源:在Web應(yīng)用中反應(yīng)為用戶可以訪問的URL。
[3]權(quán)限:表示用戶在應(yīng)用中是否能夠訪問某個資源。
[4]角色:權(quán)限的集合。
2,Shiro授權(quán)方式
[1]編程式
[2]注解式
[3]jsp/gsp標(biāo)簽式
3,Shiro默認(rèn)攔截器
Shiro內(nèi)置了很多默認(rèn)的攔截器,比如身份驗證,授權(quán)等相關(guān)的。默認(rèn)攔截器可以參考o(jì)rg.apache.web.filter.mgt.DefaultFilter中的枚舉攔截器。
4,Shiro授權(quán)流程
[1]授權(quán)需要繼承 AuthorizingRealm 類(該類繼承自 AuthenticationRealm 類),并重寫其 doGetAuthorizationInfo() 方法。
[2]多Realm授權(quán)的通過標(biāo)準(zhǔn),多Realm應(yīng)用下,使用ModularRealmAuthorizer授權(quán)器,只要有一個Realm授權(quán)就算通過。在ModularRealmAuthorizer循環(huán)授權(quán)的時候,還是走的第[1]條的流程,所以不用擔(dān)心。
############################### Shiro jsp標(biāo)簽庫 ##########################################
Shiro 提供了JSTL標(biāo)簽用于在JSP/GSP頁面進(jìn)行權(quán)限控制,如根據(jù)認(rèn)證用戶相應(yīng)的頁面按鈕。
首先,需要導(dǎo)入標(biāo)簽庫:
<%@ taglib uri="http://org.apache.shiro/tags" uri="shiro" %>
1,guest標(biāo)簽
游客登陸時,顯示標(biāo)簽體內(nèi)的內(nèi)容。
2,authenticated標(biāo)簽
用戶認(rèn)證通過,顯示標(biāo)簽體內(nèi)的內(nèi)容。
3,noAuthenticated標(biāo)簽
用戶未通過認(rèn)證(包括【記住我】方式登陸),顯示標(biāo)簽體內(nèi)的內(nèi)容。
4,principal標(biāo)簽
顯示用戶身份信息,如果realm傳遞的principal是一個對象,可以使用該標(biāo)簽的property來顯示具體屬性的值。
5,hasRole和hasAnyRoles
擁有指定的角色,顯示標(biāo)簽體內(nèi)的內(nèi)容。
6,lacksRole
沒有指定的角色,顯示標(biāo)簽體內(nèi)的內(nèi)容。
7,hasPermissioin和hasAnyPermissions
擁有指定的權(quán)限,顯示標(biāo)簽體內(nèi)的內(nèi)容。
8,lacksPermission
沒有指定的角色,顯示標(biāo)簽體內(nèi)的內(nèi)容。
############################### Shiro 注解 ##########################################
shiro注解用在Service和Controller層,但是如果Service層有事物注解,那么shiro注解要放在Controller層。因為兩個代理對象在類型轉(zhuǎn)換時會出現(xiàn)異常。
1,RequiresAuthentication
要求用戶已經(jīng)被認(rèn)證過。
2,RequiresGuest注解
要求訪客才能訪問。
3,RequiresPermissions
要求擁有指定的權(quán)限。
4,RequiresRoles
要求擁有指定的角色。
如果達(dá)不到注解所需要的要求,會拋出異常。
總結(jié)
- 上一篇: flex自适应宽度显示省略号
- 下一篇: Codeforces 912 D. Fi