核心组件
1)SecurityContextHolder
spring security最基本的类SecurityContextHolder
这里存储应用程序当前安全上下文的详细信息,其中包括当前使用的主体的详细信息,它使用ThreadLocal来存储这些信息,这意味着安全上下文对于整个线程的所有方法来讲都可用的,但是这不是对所有的应用来讲都是适用的,因为有些应用会要求所有的线程使用同一个上下文对象,这时我们将使用SecurityContextHolder.MODE_GLOBAL
来应对
2)获取当前用户的信息
在SecuritycontextHolder
中,我们存储当前与应用程序交互的主体的详细信息。Spring Security使用身份验证对象表示此信息。您通常不需要自己创建身份验证对象,但是用户查询身份验证对象是相当常见的。例如,您可以从应用程序中的任何位置使用以下代码块来获取当前经过身份验证的用户的名称
Object principal = SecurityContextHolder.getContext().getAuthentication