spring security之獲取當前用戶信息

1 通過 SecurityContextHolder 獲取

SecurityContextHolder內部存儲了當前與應用程序交互的主體的詳細信息。 Spring Security 使用Authentication對象來表示此信息。 通常不需要自己創建Authentication對象,但是由於經常需要查詢Authentication對象是相當普遍的。 可以在應用程序中的任何位置使用以下代碼塊來獲取當前經過身份驗證的用戶的名稱,例如:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof UserDetails) {
    String username = ((UserDetails)principal).getUsername();
} else {
    String username = principal.toString();
}

調用getContext()返回的對象是SecurityContext接口的一個實例。 這是保存在線程本地存儲中的對象。 Spring Security 中的大多數身份驗證機制都將UserDetails實例返回爲主體。

2 通過 Authentication 獲取

public Object getCurrentUser(Authentication authentication){
      return authentication;
}

3 通過@AuthenticationPrincipal 獲取

public Object getCurrentUser(@AuthenticationPrincipal UserDetails user){
     return user;
}

4 通過 Principal 獲取

public Object getCurrentUser(Principal principal){
      return authentication;
}
發佈了61 篇原創文章 · 獲贊 61 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章