SpringSecurity學習記錄3

2021-10-13 17:11:44 字數 3825 閱讀 3954

2.6.6 anyrequest()

在之前認證過程中我們就已經使用過anyrequest(),表示匹配所有的請求,一般情況下此方法都會使用,設定全部內容都需要進行認證。

.anyrequest().authenticatied();

2.6.7 antmatcher()

方法定義如下:

public c antmatcher(string… antpatterns)

引數是不定向引數,每乙個引數是有乙個ant表示式,用於匹配url規則

規則如下:

在實際專案中經常需要放行所有的靜態資源,下面演示放行js資料夾下所有的指令碼檔案

.

antmatchers

("/js/**"

,"/css/**").

permitall()

;

還有一種配置方式是只要是js檔案就放行

.

antmatchers

("/**/*.js").

permitall()

;

2.6.8 regexmatcher()
.

regexmatchers

(".+[.]png").

permitall()

; 正規表示式 放行 所有的png

//指定請求方法

2.6.9 mvcmatchers 詳解

如果我們想讓整個專案訪問位址前都加上/***x

現在有了mvcmatchers方法後我們可以這樣寫

.

mvcmatchers(.

..patterns:

"/demo").

servletpath

("/***x").

permitall

()

2.7 內建控制方法

2.7.1

permitall  允許所有的訪問

denyall 禁止所有的訪問

anonymous 匿名訪問

authenticated 認證之後可以訪問 只要登入進來就能訪問

fullyauthenticated 必須使用者名稱和密碼登入之後才能訪問

rememberme 在免登陸下進行訪問

2.8 角色許可權判斷

除了之前講解的內建許可權控制。spring security中還支援很多其他許可權控制。這些方法一般都用於使用者已經被認證後,判斷使用者是否具有特定的要求。

基於許可權

2.8.1 hasauthority(string)

判斷使用者是否具有特定的許可權,使用者的許可權是在自定義登入邏輯中建立user物件時指定的。下圖中admin和normal就是使用者的許可權。admin 和 normal 嚴格區分大小寫。

在配置類中通過hasauthority(「admin」)設定具有admin許可權時才能訪問

.

antmatchers

("/main.html").

hasauthority

("admin"

)

2.8.2 hasanyauthority(string …)

如果使用者具備給定許可權中的某乙個,就允許訪問

基於角色

2.8.3 hasrole(string)

判斷使用者是否具有特定的角色,使用者的角色是在自定義登入邏輯中建立user物件時指定的。下圖中"role_abc"就是使用者的角色,角色的新增role_是必須要有的,role_abc就代表abc是角色

在配置類中通過hasrole(「abc」)設定具有abc角色時才能訪問

.

antmatchers

("/main.html").

hasrole

("abc"

)

2.8.4 hasanyrole(string…)

如果使用者具備給定角色中的某乙個,就允許訪問

基於ip位址

2.8.5 hasipaddress(string)

在配置類中通過hasipaddress(「192.168.50.1」)設定192.168.50.1的伺服器才能訪問

.

antmatchers

("/main.html").

hasipaddress

("192.168.50.1"

)

2.9 自定義403處理方法

自定義myaccessdeniedhandler類

@component

public

class

myaccessdeniedhandler

implements

accessdeniedhandler

}

在配置類中加入:

嗎    @autowired

private myaccessdeniedhandler accessdeniedhandler;

//異常處理

;

2.10 基於表示式的訪問控制

可以通過access方法實現上面訪問控制一樣的功能

.

antmatches

("/main.html").

access

("hasrole('abc')"

) 等價於

.antmatchers

("/main.html").

hasrole

("abc"

)

2.11基於註解的訪問控制

在spring security中提供了一些訪問控制的註解,這些註解都是預設是都不可用的,需要通過@enableglobalmethodsecuriy進行開啟後使用。

如果設定的條件允許, 程式可以正常執行。如果不允許會報500

org.soringfreamework.security.access.accessdeniedexception:不允許訪問

這些註解可以寫到service介面或方法上,也可以寫到controller或controller的方法上,通常情況下都寫在控制器方法上,控制介面url是否允許被訪問。

2.11.1 @secured

@secured是專門用於判斷是否具有角色的,都寫在方法或類上,引數要以role_開頭

preauthorize允許角色以role_開頭,也可以不以role_開頭,但是配置類不允許以role_開頭

Spring security 邊做邊學

之前遇到乙個需求,在執行時決定允許訪問的url的角色。而不是在xml裡配置。解決方案是實現自己的voter類。現在遇到另乙個需求,應用有2個不同的登入頁面。比如 普通使用者 通過 demo user login.jsp,而管理員 通過 demo admin login.jsp 登入系統。之後,進入不...

spring security2配置檔案學習小結

使用命名空間,主要分為3個部分 a.註冊過濾器鏈,配置表單登陸,登出等 b.註冊自定義的安全認證管理器 c.註冊自定義的授權過濾器 2.a.元素會建立乙個filterchainproxy和filter使用的bean。以前常常出現的因為filter順序不正確產生的問題不會再出現了,現在這些過濾器的位置...

spring security 安全框架

本文 http itblood.com spring security security framework.html 安全常識 acegi介紹 以宣告式方式為基於spring的web應用新增認證和授權控制 acegi體系結構 認證管理器 訪問控制管理器。認證 authenticationproce...