簡介:
在 shiro 中,使用者需要提供 principals (身份)和 credentials(證明)給 shiro,從而應用能驗證使用者身份:
principals:身份,即主體的標識屬性,可以是任何東西,如使用者名稱、郵箱等,唯一即可。乙個主體可以有多個 principals,但只有乙個 primary principals,一般是使用者名稱 / 密碼 / 手機號。
credentials:證明 / 憑證,即只有主體知道的安全值,如密碼 / 數字證書等。
最常見的 principals 和 credentials 組合就是使用者名稱 / 密碼了。接下來先進行乙個基本的身份認證。
1.引入依賴:
<2.resources下建立shrio.ini檔案,裡面有兩個身份和憑據dependency
>
<
groupid
>junit
groupid
>
<
artifactid
>junit
artifactid
>
<
version
>4.9
version
>
dependency
>
<
dependency
>
<
groupid
>commons-logging
groupid
>
<
artifactid
>commons-logging
artifactid
>
<
version
>1.1.3
version
>
dependency
>
<
dependency
>
<
groupid
>org.apache.shiro
groupid
>
<
artifactid
>shiro-core
artifactid
>
<
version
>1.2.2
version
>
dependency
>
[users]3.測試類:lc=123
tt=123
public執行後:驗證成功class
test catch
(authenticationexception e)
//登出
subject.logout();}}
將使用者更改為乙個錯誤的username,登陸失敗,丟擲驗證失敗異常
4.總結:
流程如下:
首先呼叫 subject.login(token) 進行登入,其會自動委託給 security manager,呼叫之前必須通過 securityutils.setsecuritymanager() 設定;
securitymanager 負責真正的身份驗證邏輯;它會委託給 authenticator 進行身份驗證;
authenticator 才是真正的身份驗證者,shiro api 中核心的身份認證入口點,此處可以自定義插入自己的實現;
authenticator 可能會委託給相應的 authenticationstrategy 進行多 realm 身份驗證,預設 modularrealmauthenticator 會呼叫 authenticationstrategy 進行多 realm 身份驗證;
authenticator 會把相應的 token 傳入 realm,從 realm 獲取身份驗證資訊,如果沒有返回 / 丟擲異常表示身份驗證失敗了。此處可以配置多個 realm,將按照相應的順序及策略進行訪問。
一 Shiro 身份驗證
一.shiro 身份驗證 principals 身份,即主體的標識屬性,可以是任何東西,如使用者名稱 郵箱等,唯一即可。乙個主體可以有多個 principals,但只有乙個 primary principals,一般是使用者名稱 密碼 手機號。credentials 證明 憑證,即只有主體知道的安全...
shiro身份驗證 一
junitgroupid junitartifactid 4.9version dependency commons logginggroupid commons loggingartifactid 1.1.3version dependency org.apache.shirogroupid sh...
基本使用者身份驗證
基本使用者身份驗證 各系統可根據自己的實際需要,自定義驗證方法,此多語言模組實現了驗證並提供參考依據 詳細說明 判斷使用者是否登入,如果未登入則跳轉到統一登入頁面 public class authattribute actionfilterattribute 判斷請求引數中是否帶有訪問令牌 讀取客...