Java服务器端编程SpringFrameworkSpringBoot极简教程 · Spring Boot

Spring Security核心组件

2017-06-14  本文已影响261人  李亚楠0219
  • SecurityContextHolder、SecurityContext and Authentication Objects
  • UserDetailsService
  • GrantedAuthority

SecurityContextHolder、SecurityContext、Authentication

SecurityContextHolder是最基础的核心组件,它内部存储着当前用户的基本信息。默认情况下,使用ThreadLocal来保存这些信息。

获取当前用户信息

Spring Security在SecurityContextHolder中存储当前用户的信息(Authentication对象),获取当前用户信息也就是要获取Authentication对象,在应用的任何地方,都可以使用如下代码获取当前用户名:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof UserDetails) {
    String username = ((UserDetails)principal).getUsername();
} else {
    String username = principal.toString();
}

UserDetailsService

那么,我们如何为Spring Security提供UserDetails信息?
答案是实现UserDetailsService接口。接口函数:UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;

GrantedAuthority

除了用户信息,Authentication还可提供权限信息(使用GrantedAuthority来描述),使用getAuthorities()函数获取GrantedAuthority对象。

总结

上一篇下一篇

猜你喜欢

热点阅读