Shiro基本概念及與Spring整合

2021-10-03 06:23:10 字數 4002 閱讀 8499

subject:當前登入人的乙個安全檢視。**可以從物件中獲取登入資訊。

securitymanager:架構的核心,組織管理所有的subject。

realms:使用者自定義,提供獲取使用者資訊,認證資訊。

下面是更加詳細的架構圖:

通過configuration配置shiro。

@configuration

public class shiroconfig

@bean

public shirosecurityrealm myrealm()

/*** 配置shirofilte***ctorybean

** @param securitymanager

* @return

*/@bean

public shirofilte***ctorybean shirofilter(securitymanager securitymanager)

@bean

public lifecyclebeanpostprocessor lifecyclebeanpostprocessor()

@bean

public authorizationattributesourceadvisor

authorizationattributesourceadvisor(securitymanager securitymanager)

}

spring中,在controller上新增requirespermissions,requiresroles註解,從而為介面新增訪問許可權限制。

許可權校驗:

@requirespermissions("account:create")

public void openaccount( account acct )

角色校驗:

@requiresroles( "teller" ) 

public void openaccount( account acct )

shiro有預設的實現,能夠讀取ini配置。本文沒有採用這種方式,而是直接在configuration中配置。

# ********************===

# shiro ini configuration

# ********************===

[main]

# objects and their properties are defined here,

# such as the securitymanager, realms and anything

# else needed to build the securitymanager

[users]

# the 'users' section is for ****** deployments

# when you only need a small number of statically-defined

# set of user accounts.

[roles]

# the 'roles' section is for ****** deployments

# when you only need a small number of statically-defined

# roles.

[urls]

# the 'urls' section is used for url-based security

# web documentation

main中配置realms以及securitymanager。

urls中配置路徑、檔案的許可權。

filter name類描述

anon

org.apache.shiro.web.filter.authc.anonymousfilter

需要登入,但不做許可權校驗。

authc

org.apache.shiro.web.filter.authc.formauthenticationfilter

基於表單的驗證。對於訪問進行許可權校驗。如果不通過則redirect到loginurl。

需要使用者登入才能繼續訪問資源。如果使用者沒有登入,則通過要求使用者通過基本的http協議進行登入。登入完成後,會繼續訪問之前的url。

logout

org.apache.shiro.web.filter.authc.logoutfilter

接到這個請求,會直接logout當前的subject,並重定向到配置的 redirectrul。

nosessioncreation

org.apache.shiro.web.filter.session.nosessioncreationfilter

這是乙個非常有用的過濾器,可以放在任何過濾器鏈的前面,這些過濾器鏈可能會導致rest、soap或其他不打算參與會話的服務呼叫。

perms

org.apache.shiro.web.filter.authz.permissionsauthorizationfilter

如果當前使用者具有由對映值指定的許可權,則允許訪問;如果使用者沒有指定的所有許可權,則拒絕訪問。

port

org.apache.shiro.web.filter.authz.portfilter

要求請求位於特定埠上的篩選器,如果不是,則重定向到該埠上的相同url。

http的method(get,post等)轉成rest的方法(read,create等)。

roles

org.apache.shiro.web.filter.authz.rolesauthorizationfilter

根據角色過濾

使用者已經登入,或者設定了remember me。判斷條件: subject.getprincipal() != null.

使用者需要登入才能訪問此資源,但是不會做許可權校驗。

用例:

[urls]

/user/signup/** = anon

/user/** = authc>

user/signup路徑下所有的資源登入後都可以訪問,但是/user/目錄下其他的資源,都需要做許可權校驗。

執行過程:

如果乙個subject還沒有session,那麼將會禁止對於subject.getsession() 和subject.getsession(true)的呼叫。如果在期間有呼叫,則丟擲異常。

如果在filter呼叫之前subject已經有session了,或者在應用的其他地方建立了session,或者在此filter之前的filter建立了session,對於此filter沒有影響。

http method 和rest 原語的對映規則。

SPC基本概念及理解

一 概念 統計過程控制 statistical process control 簡稱spc 是指借助數理統計方法進行過程控制。它對生產過程進行分析評價,根據反饋資訊及時發現系統性因素出現的徵兆,並採取措施消除其影響,使過程維持在僅受隨機性因素影響的受控狀態,以達到控制質量的目的。理解 在生產過程中,...

Linux 基本概念及操作

建立檔名 進入目錄 終止當前程式 ctrl d鍵盤輸入結束或退出終端 ctrl s暫停當前程式,暫停後按下任意鍵恢復執行 ctrl z將當前程式放到後台執行,恢復到前台為命令fg ctrl a將游標移至輸入行頭,相當於home鍵 ctrl e將游標移至輸入行末,相當於end鍵 ctrl k刪除從游標...

棧 基本概念及應用

可以把棧看作是一摞書,要往上疊只能把書放在最上面,而要取也只能取從最上面開始取。我們發現最後放進去的書能最先取 出來。這就是棧遵循的乙個先進後出策略 first in last out,簡稱filo include stack 資料結構 佇列名 例如 stacks stacks stacks nod...