shiro基礎知識記錄

Shiro

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

ShiroFilter的工作原理

在這裏插入圖片描述

DelegatingFilterProxy 作用是自動到 Spring 容器查找字爲 shiroFilter(filter-name)的 bean 並把所有 Filter 的操作委託給它。所以web.xml和spring 容器中的filter-name應該一樣。

URL匹配模式

Ant 路徑通配符支持 ?、*、**,注意通配符匹配不 包括目錄分隔符“/”:

– ?:匹配一個字符,如 /admin? 將匹配 /admin1,但不 匹配 /admin 或 /admin/;

– *:匹配零個或多個字符串,如 /admin*將匹配/admin、 /admin123,但不匹配 /admin/1;

–** :匹配路徑中的零個或多個路徑,如 /admin/** 將匹 配 /admin/a 或 /admin/a/b

URL匹配順序

URL 權限採取第一次匹配優先的方式,即從頭開始 使用第一個匹配的 url 模式對應的攔截器鏈。

身份認證思路

  1. 獲取當前的subject,調用SecurityUtils.getSubject();
  2. 測試當前的用戶是否已經被認證,即是否已經登錄,調用subject的isAuthenticated()
  3. 若沒有被認證,則把用戶名和密碼封裝爲UsernamePasswordToken對象
    1. 創建一個表單頁面
    2. 把請求提交到Springmvc的Handler
    3. 獲取用戶名和密碼
  4. 執行登錄:調用subject的login(AuthenticationToken)方法。
  5. 自定義Realm的方法,從數據庫中獲取對應的記錄,返回給shiro。
    1. 實際上需要繼承org.apach.shiro.realm.AuthenticatingRealm類
    2. 實現doGetAuthenticationInfo(AuthenticationToken)方法。
  6. 由shiro完成對密碼的比對。

密碼的比對:

通過AuthenticatingRealm的credentialsMatcher屬性來進行的密碼比對。

  • 如何把一個字符串加密爲MD5

替換當前的Realm的credentialsMatcher屬性,直接使用HashedCredentialsMatcher對象,並設置加密算法即可。

實現認證Realm步驟

在這裏插入圖片描述

實現授權

  1. 授權需要繼承AuthorizingRealm類,並實現其doGetAuthorizationInfo方法。

  2. AuthorizingRealm類繼承自AuthenticatingRealm,但沒有實現AuthenticatingRealm中的doGetAuthenticationInfo,所以認證和授權只需要繼承

    AuthorizingRealm就可以了,同時實現兩個抽象方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章