Spring Security中 SecurityContextHolder.getContext().getAuthentication().getPrincipal()獲取當前用戶


 

獲取當前用戶

Spring Security使用一個Authentication對象來描述當前用戶的相關信息。SecurityContextHolder中持有的是當前用戶的SecurityContext,而SecurityContext持有的是代表當前用戶相關信息的Authentication的引用。這個Authentication對象不需要我們自己去創建,在與系統交互的過程中,Spring Security會自動為我們創建相應的Authentication對象,然后賦值給當前的SecurityContext。但是往往我們需要在程序中獲取當前用戶的相關信息,比如最常見的是獲取當前登錄用戶的用戶名。在程序的任何地方,通過如下方式我們可以獲取到當前用戶的用戶。

  public User getCurrentUser(){
        User user=(User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return user;
    }

 

通過Authentication.getPrincipal()可以獲取到代表當前用戶的信息,這個對象通常是UserDetails的實例。獲取當前用戶的用戶名是一種比較常見的需求。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM