Shiro 二 身份驗證基本流程

2021-10-03 07:31:35 字數 2223 閱讀 6881

簡介:

在 shiro 中,使用者需要提供 principals (身份)和 credentials(證明)給 shiro,從而應用能驗證使用者身份:

principals:身份,即主體的標識屬性,可以是任何東西,如使用者名稱、郵箱等,唯一即可。乙個主體可以有多個 principals,但只有乙個 primary principals,一般是使用者名稱 / 密碼 / 手機號。

credentials:證明 / 憑證,即只有主體知道的安全值,如密碼 / 數字證書等。

最常見的 principals 和 credentials 組合就是使用者名稱 / 密碼了。接下來先進行乙個基本的身份認證。

1.引入依賴:

<

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

>

2.resources下建立shrio.ini檔案,裡面有兩個身份和憑據

[users]

lc=123

tt=123

3.測試類:

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 判斷請求引數中是否帶有訪問令牌 讀取客...