亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁/技術(shù)文章
文章詳情頁

Spring Security如何基于Authentication獲取用戶信息

瀏覽:25日期:2023-09-13 15:35:24

Spring Security使用一個Authentication對象來描述當(dāng)前用戶的相關(guān)信息。SecurityContextHolder中持有的是當(dāng)前用戶的SecurityContext,而SecurityContext持有的是代表當(dāng)前用戶相關(guān)信息的Authentication的引用。

這個Authentication對象不需要我們自己去創(chuàng)建,在與系統(tǒng)交互的過程中,Spring Security會自動為我們創(chuàng)建相應(yīng)的Authentication對象,然后賦值給當(dāng)前的SecurityContext。

但是往往我們需要在程序中獲取當(dāng)前用戶的相關(guān)信息,比如最常見的是獲取當(dāng)前登錄用戶的用戶名。在程序的任何地方,通過如下方式我們可以獲取到當(dāng)前用戶的用戶名。

public String getCurrentUsername() { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { return ((UserDetails) principal).getUsername(); } if (principal instanceof Principal) { return ((Principal) principal).getName(); } return String.valueOf(principal); }

通過Authentication.getPrincipal()可以獲取到代表當(dāng)前用戶的信息,這個對象通常是UserDetails的實例。獲取當(dāng)前用戶的用戶名是一種比較常見的需求,關(guān)于上述代碼其實Spring Security在Authentication中的實現(xiàn)類中已經(jīng)為我們做了相關(guān)實現(xiàn),所以獲取當(dāng)前用戶的用戶名最簡單的方式應(yīng)當(dāng)如下。

public String getCurrentUsername() { return SecurityContextHolder.getContext().getAuthentication().getName(); }

此外,調(diào)用SecurityContextHolder.getContext()獲取SecurityContext時,如果對應(yīng)的SecurityContext不存在,則Spring Security將為我們建立一個空的SecurityContext并進(jìn)行返回。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 免费一级片视频 | 天天综合亚洲国产色 | 国产成人午夜精品影院游乐网 | 国产亚洲精品福利在线 | 免费人成网站线观看合集 | 色屁屁www欧美激情在线观看 | 亚洲丶国产丶欧美一区二区三区 | 亚洲3级| 国产伦精品一区二区三区无广告 | 黑人一区二区三区 | 亚洲色图综合在线 | 美女国产网站 | 一级做一级爱a做片性视频视频 | 久久亚洲国产最新网站 | 欧美一级黄色片 | 1024免费观看 | 婷婷在线网 | 色综合色综合色综合网址 | 手机看片日韩国产一区二区 | 亚洲精品天堂一区二区三区 | 精品一区二区三区免费毛片爱 | 亚洲午夜在线 | a级毛片免费看 | 国产三级精品最新在线 | 色涩在线 | 日本护士xxxxx极品 | 亚洲欧美在线精品 | 日韩电影中文 | 在线播放亚洲精品 | 亚洲天堂色网站 | 黑人与欧洲性大战 | 国产人成精品香港三级古代 | 婷婷亚洲综合五月天小说在线 | 天天影视欧美综合在线观看 | 免费操人| 轻轻啪在线视频播放 | 日韩欧美亚洲一区二区综合 | 国产亚洲精品aaa大片 | 成人窝窝午夜看片 | 一级骚片超级骚在线观看 | 在线a人片免费观看国产 |