002 shiro的三個核心API

2022-09-14 05:45:09 字數 1688 閱讀 2261

一 . 概述

本次簡單的說明一下shiro的使用,將上一節的shiro的基本功能進行一下說明.

二 . 核心api

上一節我們說到shiro對外部的核心物件有三個

[1]subject : 描述使用者物件

[2]securitymanager : 安全管理器物件,封裝shiro功能的物件.

[3]realm : 安全資料的提供者.

本節的核心作用就是說明一下上述的api物件的簡單使用.

三 . securitymanager

(1)我們此處使用固定資料來源的操作,會使用ini檔案完成realm的實現,並使用對應的inisecuritymanager.

//

實現shiro的認證過程

//建立securitymanager

securitymanager securitymanager = new inisecuritymanage***ctory("

classpath:shiro.ini

").createinstance();

//將當前的securitymanager設定到當前的環境之中

securityutils.setsecuritymanager(securitymanager);

我們通過乙個ini檔案建立乙個securitymanager物件,並將其設定到全文環境之中.

(2)subject物件的獲取

//

下面實現的是乙個登陸的功能

//獲取subkect,相當與乙個currentuser

subject currentuser = securityutils.getsubject();

我們從工具類之中獲取subject物件.

四 .subject的功能

從上圖之中我們可以看到.subject物件封裝了大量的功能,比如登入login(),還有大量的授權方法(檢查是否具有某個許可權的方法),我們以後的應用**大部分時候都是

與subject物件發生互動.

五.realm

我們首先看一下類圖,發現realm是頂層的介面,其中有乙個方法:

authenticationinfo getauthenticationinfo(authenticationtoken token) throws authenticationexception;
上面的方法就是獲取認證資訊的方法,傳入的引數是乙個認證的憑證(賬號和密碼),如果認證成功,就返回乙個使用者的身份資訊,否則就丟擲異常.

但是,我們發現realm之中沒有授權的方法,這個方法被放到了authorizingrealm這個介面之中.

protected

abstract authorizationinfo dogetauthorizationinfo(principalcollection principals);

上面的方法表示,通過使用者的主體資訊返回使用者的授權資訊(就是通過使用者的身份資訊在檢查許可權的時候判斷是否具有許可權).

因此,我們想要讓我們的realm提供認證和授權的的資訊就需要繼承這個類完成定製.

ACM100題 002三個水杯

描述 給出三個水杯,大小不一,並且只有最大的水杯的水是裝滿的,其餘兩個為空杯子。三個水杯之間相互倒水,並且水杯沒有標識,只能根據給出的水杯體積來計算。現在要求你寫出乙個程式,使其輸出使初始狀態到達目標狀態的最少次數。輸入 第一行乙個整數n 0接下來每組測試資料有兩行,第一行給出三個整數v1 v2 v...

剖析RedHat Linux中三個重要核心檔案

在網路中,不少伺服器採用的是linux系統。為了進一步提高伺服器的效能,可能需要根據特定的硬體及需求重新編譯linux核心。編譯linux核心,需要根據規定的步驟進行,編譯核心過程中涉及到幾個重要的檔案。比如對於redhat linux,在 boot目錄下有一些與linux核心有關的檔案,進入 bo...

剖析RedHat Linux中三個重要核心檔案

在網路中,不少伺服器採用的是linux系統。為了進一步提高伺服器的效能,可能需要根據特定的硬體及需求重新編譯linux核心。編譯linux核心,需要根據規定的步驟進行,編譯核心過程中涉及到幾個重要的檔案。比如對於redhat linux,在 boot目錄下有一些與linux核心有關的檔案,進入 bo...