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

相关文章
相关标签/搜索