七 . Shiro - jsp標(biāo)簽

  • 在頁面上,如果要實(shí)現(xiàn)對(duì)某些文本、按鈕等的控制,例如需要有什么角色或者權(quán)限才可以看見這個(gè)按鈕,利用shiro自帶的shiro標(biāo)簽?zāi)芎苋菀拙蛯?shí)現(xiàn)

一 . 引入標(biāo)簽

<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro">

二 . shiro 標(biāo)簽

  1. shiro:authenticated (表示已認(rèn)證通過,但不包括remember me登錄的)
  2. shiro:guest (表示是游客身份,沒有登錄)
  3. shiro:hasAnyRoles(表示擁有這些角色中其中一個(gè))
  4. shiro:hasPermission(表示擁有某一權(quán)限)
  5. shiro:hashRole (表示擁有某一角色)
  6. shiro:lacksPermission (表示不擁有某一角色)
  7. shiro:lacksRole (表示不擁有某一角色)
  8. shiro:notAuthenticated (表示沒有通過驗(yàn)證)
  9. shiro:principal (表示用戶的身份)
  10. shiro:user (表示已登錄)

1.shiro:authenticated (表示已認(rèn)證通過,但不包括remember me登錄的)

<shiro:authenticated>
    <label>用戶身份驗(yàn)證已通過 </label>
</shiro:authenticated>

說明:只有已通過用戶認(rèn)證,但不是通過記住我(remember me)瀏覽才會(huì)看到標(biāo)簽內(nèi)的內(nèi)容

2.shiro:guest (表示是游客身份,沒有登錄)

<shiro:guest>
    <label>您當(dāng)前是游客,</label><a href="/login.jsp" >請(qǐng)登錄</a>
</shiro:guest>

說明:只有是沒有登錄過,以游客的身份瀏覽才會(huì)看到標(biāo)簽內(nèi)的內(nèi)容

3.shiro:hasAnyRoles(表示擁有這些角色中其中一個(gè))

<shiro:hasAnyRoles name="admin,user">
    <label>這是擁有admin或者是user角色的用戶</label>
</shiro:hasAnyRoles>

說明:只有成功登錄后,且具有admin或者user角色的用戶才會(huì)看到標(biāo)簽內(nèi)的內(nèi)容;name屬性中可以填寫多個(gè)角色名稱,以逗號(hào)(,)分隔

4.shiro:hasPermission(表示擁有某一權(quán)限)

<shiro:hasPermission name="admin:add">
    <label>這個(gè)用戶擁有admin:add的權(quán)限</label>
</shiro:hasPermission>

說明:只有成功登錄后,且具有admin:add權(quán)限的用戶才可以看到標(biāo)簽內(nèi)的內(nèi)容,name屬性中只能填寫一個(gè)權(quán)限的名稱

5.shiro:hashRole (表示擁有某一角色)

<shiro:hasRole name="admin">
    <label>這個(gè)用戶擁有的角色是admin</label>
</shiro:hasRole>

說明:只有成功登錄后,且具有admin角色的用戶才可以看到標(biāo)簽內(nèi)的內(nèi)容,name屬性中只能填寫一個(gè)角色的名稱

6.shiro:lacksPermission (表示不擁有某一權(quán)限)

<shiro:lacksPermission name="admin:delete">
    <label>這個(gè)用戶不擁有admin:delete的權(quán)限</label>
</shiro:lacksPermission>

說明:只有成功登錄后,且不具有admin:delete權(quán)限的用戶才可以看到標(biāo)簽內(nèi)的內(nèi)容,name屬性中只能填寫一個(gè)權(quán)限的名稱

7.shiro:lacksRole (表示不擁有某一角色)

<shiro:lacksRole name="admin">
    <label>這個(gè)用戶不擁有admin的角色</label>
</shiro:lacksRole>

說明:只有成功登錄后,且不具有admin角色的用戶才可以看到標(biāo)簽內(nèi)的內(nèi)容,name屬性中只能填寫一個(gè)角色的名稱

8.shiro:notAuthenticated (表示沒有通過驗(yàn)證)

<shiro:notAuthenticated>
    <label>用戶身份驗(yàn)證沒有通過(包括通過記住我(remember me)登錄的) </label>
</shiro:notAuthenticated>

說明:只有沒有通過驗(yàn)證的才可以看到標(biāo)簽內(nèi)的內(nèi)容,包括通過記住我(remember me)登錄的

9.shiro:principal (表示用戶的身份)

  • 取值取的是你登錄的時(shí)候,在Realm 實(shí)現(xiàn)類中的new SimpleAuthenticationInfo(第一個(gè)參數(shù),....) 放的第一個(gè)參數(shù):
....
return new SimpleAuthenticationInfo(user,user.getPswd(), getName());
1)如果第一個(gè)放的是username或者是一個(gè)值 ,那么就可以直接用。
<!--取到username-->
<shiro: principal/>
2)如果第一個(gè)參數(shù)放的是對(duì)象,比如放User 對(duì)象。那么如果要取其中某一個(gè)值,可以通過property屬性來指定。
<!--需要指定property-->
<shiro:principal property="username"/>

10.shiro:user (表示已登錄)

<shiro:user>
    <label>歡迎[<shiro:principal/>],</label><a href="/logout.jsp">退出</a>
</shiro:user>

說明:只有已經(jīng)登錄(包含通過記住我(remember me)登錄的)的用戶才可以看到標(biāo)簽內(nèi)的內(nèi)容;一般和標(biāo)簽shiro:principal一起用,來做顯示用戶的名稱


注意:
shiro的jsp標(biāo)簽可以嵌套使用,可以根據(jù)業(yè)務(wù)的具體場(chǎng)景進(jìn)行使用。例如一個(gè)按鈕需要排除不是admin或user角色的用戶才可以顯示,可以像如下這樣實(shí)現(xiàn):

<shiro:lacksRole name="admin">
    <shiro:lacksRole name="user"> 
        <label>這個(gè)用戶不擁有admin或user的角色</label>
    </shiro:lacksRole>
</shiro:lacksRole>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. shiro 在使用shiro之前,我們需要考慮一下我們項(xiàng)目中依舊存在的一些問題1.項(xiàng)目中的密碼是否可以明文存...
    蒲公英愛上閱讀 722評(píng)論 0 1
  • 安全應(yīng)該是互聯(lián)網(wǎng)公司的一道生命線,幾乎任何的公司都會(huì)涉及到這方面的需求。在Java領(lǐng)域一般有Spring Secu...
    滄海一粟謙閱讀 2,493評(píng)論 0 3
  • 本文主要講解使用shell腳本登陸遠(yuǎn)程服務(wù)器, 解放你的大腦記憶ip地址。 首先是ssh正常登陸命令。 容易忘記i...
    小小奶狗閱讀 1,264評(píng)論 0 1
  • 記得我小學(xué)五年級(jí)的時(shí)候有篇作文作業(yè)——我的理想。如果我在作文里寫我的理想是做個(gè)音樂工作者或者運(yùn)動(dòng)員,那無疑是在校園...
    蘭村直子閱讀 572評(píng)論 2 2
  • QQ的離線傳輸功能很是強(qiáng)大,也方便了不少用戶。但對(duì)于內(nèi)網(wǎng)用戶只能使用Squid來訪問互聯(lián)網(wǎng)及使用QQ的用戶...
    左右左_0c30閱讀 938評(píng)論 0 0

友情鏈接更多精彩內(nèi)容