spring security學習記錄

2021-09-24 01:33:47 字數 2416 閱讀 5439

首先,它是能夠為基於spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架,基於 servlet 過濾器、 ioc和aop , 為 web 請求和方法呼叫提供身份確認和授權處理,避免了**耦合,減少了大量重複**工作。

accessdecisionmanager 介面有乙個套接的抽象實現類abstractaccessdecisionmanager,和三個實現類,即,三種表決方式,如下

for (accessdecisionvoter voter : getdecisionvoters()) 

//檢查投票結果

switch (result)

}//如果存在被拒絕。則丟擲異常

if (deny > 0)

//全部棄權則呼叫方法,該方法原始碼如下

checkallowifallabstaindecisions();

protected final void checkallowifallabstaindecisions() 

}

for (accessdecisionvoter voter : getdecisionvoters()) 

//檢查投票結果

switch (result)

}//同意大於拒絕

if (grant > deny)

//反之

if (deny > grant)

//相同且不是棄權,根據allowifequalgranteddenieddecisions(預設true)

if ((grant == deny) && (grant != 0)) else

}//棄權處理(預設false,丟擲異常)

checkallowifallabstaindecisions();

兩種預設投票器

@service

public class customuserdetailsservice implements userdetailsservice

listauthorities = new arraylist<>();

for (sysrole role : sysuser.getrolelist())

}return new user(sysuser.getaccount(),sysuser.getpassword(),authorities);

}}

@configuration

@enablewebsecurity

@enableglobalmethodsecurity(prepostenabled = true) // 啟用方法級別的許可權認證

public class securityconfig extends websecurityconfigureradapter

//配置加密方式

@override

protected void configure(authenticationmanagerbuilder auth) throws exception

//生成security提供的加密類bean

@bean

public passwordencoder passwordencoder()

}

測試類

@runwith(springrunner.class)

@springboottest

@autowired

private passwordencoder passwordencoder;

@test

public void contextloads() throws exception

}-----------------------------------------

$2a$10$l01l3bhlnt4lvwbsw/en.e7lru/jndy6yodwtyzq5ekxl82kc5p16

$2a$10$yuj7rjrrykkdopf.dcuf8oiqn7iipolsw0sihdxvyy/d5gi17cooa

$2a$10$dazjzlw3ohptoypistins.vljjkbluugnviygknzlnxbngjxqhbnw

false

true

此後,使用者就可以繼續操作去訪問其它受保護的資源了,但是在訪問的時候將會使用儲存在 securitycontext 中的 authentication 物件進行相關的許可權鑑定。

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