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

 

獲取當前用戶spa

Spring Security使用一個Authentication對象來描述當前用戶的相關信息。SecurityContextHolder中持有的是當前用戶的SecurityContext,而SecurityContext持有的是表明當前用戶相關信息的Authentication的引用。這個Authentication對象不須要咱們本身去建立,在與系統交互的過程當中,Spring Security會自動爲咱們建立相應的Authentication對象,而後賦值給當前的SecurityContext。可是每每咱們須要在程序中獲取當前用戶的相關信息,好比最多見的是獲取當前登陸用戶的用戶名。在程序的任何地方,經過以下方式咱們能夠獲取到當前用戶的用戶。code

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

 

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

此外,調用SecurityContextHolder.getContext()獲取SecurityContext時,若是對應的SecurityContext不存在,則Spring Security將爲咱們創建一個空的SecurityContext並進行返回。

blog

相關文章
相關標籤/搜索