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...