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

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

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

瀏覽:48日期: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并進行返回。

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

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲性大片 | 在线观看www日本免费网站 | 看真人视频一级毛片 | 日韩亚洲视频 | 亚洲精品91香蕉综合区 | 亚洲精品乱码国产精品乱码 | 久久久夜色精品国产噜噜 | 成人毛片18女人毛片免费 | 成年人午夜 | 中国一级毛片免费观看 | 国产一级毛片免 | 高清影院在线欧美人色 | 4hc44四虎在线永久地址 | 欧美日韩中文字幕久久伊人 | 亚洲一级黄色 | 亚洲欧美日韩中文在线制服 | 草草影院欧美 | 黄色视频一级毛片 | 九九这里只有精品视频 | 亚洲成在人线久久综合 | 国产精品久久99 | 超清波多野结衣精品一区 | 国产视频在线免费观看 | 久久久9999久久精品小说 | 伊人黄网| 91污网站| 亚洲综合成人网 | 国产黄色片91 | 国产亚洲欧美在线观看的 | 欧美一级毛片大片免费播放 | 99久久网 | 欧美日韩精品一区二区三区视频在线 | 7799国产精品久久久久99 | 国产高清在线精品一区免费97 | 国产成人精品免费午夜 | 两性毛片| 26uuu天天夜夜综合 | 中文字幕欧美日韩高清 | 国产精品视频免费一区二区三区 | 日本a级特黄特黄刺激大片 日本a黄 | 伊甸园精品视频网站 |