Spring security 獲取當前使用者

2021-09-07 05:25:11 字數 1854 閱讀 2759

在頁面中引入標籤

1

<%@taglibprefix="sec"uri=""%>

然後:1

username:

2:如果要在程式中獲得

看了網上很多寫法都是在程式中寫這樣的**

1

userdetails userdetails=(userdetails)securitycontextholder.getcontext().getauthentication().getprincipal();

但我在實際運用中發現獲得的authentication為null。仔細看了下源**發現,如果想用上面的**獲得當前使用者,必須在spring    

security過濾器執行中執行,否則在過濾鏈執行完時org.springframework.security.web.context.securitycontextpersistencefilter類會

呼叫securitycontextholder.clearcontext();而把securitycontextholder清空,所以會得到null。    經過spring security認證後,     

security會把乙個securitycontextimpl物件儲存到session中,此物件中有當前使用者的各種資料

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

securitycontextimpl securitycontextimpl=(securitycontextimpl)request

.getsession().getattribute("spring_security_context");

// 登入名

system.out.println("username:"

+securitycontextimpl.getauthentication().getname());

// 登入密碼,未加密的

system.out.println("credentials:"

+securitycontextimpl.getauthentication().getcredentials());

webauthenticationdetails details=(webauthenticationdetails)securitycontextimpl

.getauthentication().getdetails();

// 獲得訪問位址

system.out.println("remoteaddress"+details.getremoteaddress());

// 獲得sessionid

system.out.println("sessionid"+details.getsessionid());

// 獲得當前使用者所擁有的許可權

listauthorities=(list)securitycontextimpl

.getauthentication().getauthorities();

for(grantedauthority grantedauthority:authorities)

spring security 安全框架

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

SpringSecurity認證流程

在之前的文章 springboot spring security 基本使用及個性化登入配置 中對springsecurity進行了簡單的使用介紹,基本上都是對於介面的介紹以及功能的實現。這一篇文章嘗試從原始碼的角度來上對使用者認證流程做乙個簡單的分析。在具體分析之前,我們可以先看看springse...

SpringSecurity使用技巧

1 鑑權處理頁通常包括四個方面的設定,分別是鑑權失敗 鑑權成功 未鑑權訪問 已鑑權但訪問了受保護許可權。如何自 定義這四類處理。鑑權失敗的預設處理頁面是 spring security login?login error 其預設處理類為 urlauthenticationfailurehandler...