这里讲的是securiy处理用户信息的方法。
首先,服务端一定是讲用户信息存到Httpsession中。
1.首先,前端发起一个登陆请求,这个请求会经过security 一系列的过滤器,其中有一个SecurityContextPersistenceFilter过滤器,主要用来处理当前用户信息。在用户登录成功后,自动将用户信息存入到SecurityContextHolder中。 SecurityContextHolder 的底层就是 ThreadLocal。
也就是说只有在主线程中才可以获取到用户信息。我们举个例子:
代码如上,运行一下
打印了一个Uer信息,新线程里的报了个空。
2.在登录请求处理完毕后,响应数据给前端时,也会经过SecurityContextPersistenceFilter 过滤器,此时,会将用户信息存入Httpsession中。
3.下一个请求来的时候,还是会经过SecurityContextPersistenceFilter 过滤器,,此时系统还是会从Httpsession 中读取出登录成功的用户信息,并将之存入SecurityContextHolder 中。
然后也可以在Httpsession中拿值