亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-20 09:36:03 來源:腳本之家 閱讀:376 作者:技術研究與問題解決 欄目:編程語言

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

這個Authentication對象不需要我們自己去創建,在與系統交互的過程中,Spring Security會自動為我們創建相應的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中的實現類中已經為我們做了相關實現,所以獲取當前用戶的用戶名最簡單的方式應當如下。

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无为县| 红河县| 珲春市| 咸宁市| 福州市| 兴义市| 德保县| 鹤庆县| 汉寿县| 京山县| 稷山县| 板桥市| 淮阳县| 永清县| 什邡市| 永春县| 澄城县| 鄄城县| 青海省| 寻乌县| 大方县| 格尔木市| 嘉鱼县| 玉门市| 建瓯市| 许昌市| 新龙县| 冷水江市| 乃东县| 揭阳市| 天长市| 定南县| 西乌珠穆沁旗| 张家界市| 上杭县| 南昌县| 海兴县| 贡觉县| 靖江市| 太保市| 建水县|