shiro學習 jsp標籤

2021-09-12 08:42:08 字數 2175 閱讀 4096

在頁面上,如果要實現對某些文字、按鈕等的控制,例如需要有什麼角色或者許可權才可以看見這個按鈕,利用shiro自帶的shiro標籤能很容易就實現

一、引入shiro標籤庫

首先得在jsp頁面的頭部引入el表示式,來引入shiro標籤,以及在本頁面中使用的標籤字首
<%@ taglib uri=「 prefix=「shiro」 %>

說明:<% @ taglib %>指令宣告此jsp檔案使用了自定義的標籤,同時引用標籤庫,也指定了他們的標籤的字首,例如上面的是引入了shiro的標籤庫,指定了標籤的字首為:shiro(這個可以根據自己的命名喜好來命名)。

注意:

你必須在使用自定義標籤之前使用<% @ taglib %>指令定義,而且你可以在乙個頁面中多次使用,但是字首只能定義一次

二、shiro的標籤

下圖為shiro標籤庫中定義的方法:

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

shiro:authenticated

使用者身份驗證已通過

說明:只有已通過使用者認證,但不是通過記住我(remember me)瀏覽才會看到標籤內的內容

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

shiro:guest

您當前是遊客,

請登入說明:只有是沒有登入過,以遊客的身份瀏覽才會看到標籤內的內容

3.shiro:hasanyroles(表示擁有這些角色中其中乙個)

這是擁有admin或者是user角色的使用者

說明:只有成功登入後,且具有admin或者user角色的使用者才會看到標籤內的內容;name屬性中可以填寫多個角色名稱,以逗號(,)分隔

4.shiro:haspermission(表示擁有某一許可權)

這個使用者擁有admin:add的許可權

說明:只有成功登入後,且具有admin:add許可權的使用者才可以看到標籤內的內容,name屬性中只能填寫乙個許可權的名稱

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

這個使用者擁有的角色是admin

說明:只有成功登入後,且具有admin角色的使用者才可以看到標籤內的內容,name屬性中只能填寫乙個角色的名稱

6.shiro:lackspermission (表示不擁有某一角色)

這個使用者不擁有admin:delete的許可權

說明:只有成功登入後,且不具有admin:delete許可權的使用者才可以看到標籤內的內容,name屬性中只能填寫乙個許可權的名稱

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

這個使用者不擁有admin的角色

說明:只有成功登入後,且不具有admin角色的使用者才可以看到標籤內的內容,name屬性中只能填寫乙個角色的名稱

8.shiro:notauthenticated (表示沒有通過驗證)

shiro:notauthenticated

使用者身份驗證沒有通過(包括通過記住我(remember me)登入的)

說明:只有沒有通過驗證的才可以看到標籤內的內容,包括通過記住我(remember me)登入的

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

取值取的是你登入的時候,在realm 實現類中的new ******authenticationinfo(第乙個引數,…) 放的第乙個引數:

…return new ******authenticationinfo(user,user.getpswd(), getname());

1)如果第乙個放的是username或者是乙個值 ,那麼就可以直接用。

2)如果第乙個引數放的是物件,比如放user 物件。那麼如果要取其中某乙個值,可以通過property屬性來指定。

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

shiro:user

歡迎[shiro:principal/],

退出說明:只有已經登入(包含通過記住我(remember me)登入的)的使用者才可以看到標籤內的內容;一般和標籤shiro:principal一起用,來做顯示使用者的名稱

注意:

shiro的jsp標籤可以巢狀使用,可以根據業務的具體場景進行使用。例如乙個按鈕需要排除不是admin或user角色的使用者才可以顯示,可以像如下這樣實現:

這個使用者不擁有admin或user的角色

shiro授權 JSP標籤方式

taglib prefix shiro uri guest 標籤 訪問客看到的內容 user標籤 登入後 記住我 看到的內容 authenticated 認證後能看到的內容 notauthenticated 未認證能看到的內容 principal 顯示身份 hasrole 有了此角色才看到的內容 l...

Shiro 常用標籤

使用者沒有身份驗證時顯示相應資訊,即遊客訪問資訊。歡迎遊客訪問,登入 使用者已經經過認證 記住我登入後顯示相應的資訊。歡迎登入,logout 使用者已經身份驗證通過,即subject.login登入成功,不是記住我登入的 使用者已身份驗證通過 使用者未進行身份驗證,即沒有呼叫subject.logi...

Shiro 許可權標籤

guest標籤 使用者沒有身份驗證時顯示相應資訊,即遊客訪問資訊。user標籤 使用者已經身份驗證 記住我登入後顯示相應的資訊。authenticated標籤 使用者已經身份驗證通過,即subject.login登入成功,不是記住我登入的。notauthenticated標籤 使用者已經身份驗證通過...