最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年03月27日 10:36:21   作者:技術研究與問題解決  
這篇文章主要介紹了Spring Security如何基于Authentication獲取用戶信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 如何解決IDEA使用Tomcat控制臺中文出現(xiàn)亂碼問題

    如何解決IDEA使用Tomcat控制臺中文出現(xiàn)亂碼問題

    這篇文章主要介紹了如何解決IDEA使用Tomcat控制臺中文出現(xiàn)亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • java中Date類和Strng類的靈活轉化

    java中Date類和Strng類的靈活轉化

    這篇文章主要介紹了java中Date類和Strng類的靈活轉化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 解決MyEclipse10.7部署報錯拋空指針異常問題的方法

    解決MyEclipse10.7部署報錯拋空指針異常問題的方法

    這篇文章主要介紹了解決MyEclipse10.7部署報錯拋空指針異常問題的方法,需要的朋友可以參考下
    2015-12-12
  • JavaWeb.servlet的基本使用方法詳解

    JavaWeb.servlet的基本使用方法詳解

    Servlet指在服務器端執(zhí)行的一段Java代碼,可以接收用戶的請求和返回給用戶響應結果,下面這篇文章主要給大家介紹了關于JavaWeb.servlet基本使用的相關資料,需要的朋友可以參考下
    2022-04-04
  • 一文詳解Springboot集成mybatis-plus

    一文詳解Springboot集成mybatis-plus

    這篇文章主要介紹了Mybatis-Plus與SpringBoot整合,并在項目中實戰(zhàn)運用,列舉其增刪改查的使用方式,對學習或工作有一定的幫助,需要的小伙伴可以參考閱讀
    2023-04-04
  • SpringBoot項目如何打可執(zhí)行war包

    SpringBoot項目如何打可執(zhí)行war包

    最近小編做了一個springboot項目,最后需要打成war包在容器中部署,下面小編給大家分享下SpringBoot項目如何打可執(zhí)行war包,感興趣的朋友一起看看吧
    2020-04-04
  • SpringBoot 整合 Apache Tika提取數(shù)據(jù)的具體操作

    SpringBoot 整合 Apache Tika提取數(shù)據(jù)的具體操作

    Apache Tika?是一個功能強大的內(nèi)容分析工具,它能夠從多種文件格式中提取文本、元數(shù)據(jù)以及其他結構化信息,本文介紹了SpringBoot整合ApacheTika進行文件內(nèi)容提取和數(shù)據(jù)泄露防護的實現(xiàn),感興趣的朋友一起看看吧
    2025-02-02
  • ThreadLocal的內(nèi)存泄露問題

    ThreadLocal的內(nèi)存泄露問題

    這篇文章主要介紹了Java中ThreadLocal的內(nèi)存泄露問題,以及為什么會出現(xiàn)內(nèi)存泄漏,感興趣的小伙伴可以參考閱讀
    2023-03-03
  • sprinboot項目啟動一半到圖形化界面卡住了的解決

    sprinboot項目啟動一半到圖形化界面卡住了的解決

    這篇文章主要介紹了sprinboot項目啟動一半到圖形化界面卡住了的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Mybatis查詢Sql結果未映射到對應得實體類上的問題解決

    Mybatis查詢Sql結果未映射到對應得實體類上的問題解決

    使用mybatis查詢表數(shù)據(jù)得時候,發(fā)現(xiàn)對應得實體類字段好多都是null,本文主要介紹了Mybatis查詢Sql結果未映射到對應得實體類上的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02

最新評論

板桥市| 龙泉市| 青铜峡市| 东台市| 军事| 吉林市| 铅山县| 涪陵区| 四子王旗| 巢湖市| 修武县| 泰安市| 石阡县| 通渭县| 江油市| 临沭县| 乐安县| 正镶白旗| 南和县| 中西区| 任丘市| 沧州市| 贵定县| 建德市| 德钦县| 舞钢市| 江城| 冕宁县| 鱼台县| 阿合奇县| 元阳县| 三明市| 涿州市| 杭州市| 凤庆县| 汉寿县| 宁武县| 长丰县| 辉县市| 巫山县| 巴彦淖尔市|