起因
在使用Spring Security的项目中,当用户登录成功后,Spring Security会自动注入UserCredential
作为用户的上下文。
研究之后,在不使用Spring Security的项目中也实现了类似的效果。
解决方案
用户类
@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserInfo {
private String username;
}
UserInfo
的作用域是请求,这意味每个请求进来的时候,SpringBoot会新建一个UserInfo
,然后在请求完成后自动销毁这个Bean
。
一般情况下,可以在拦截器里注入该Bean,设置相应的属性。然后在业务代码中也自动注入该Bean,直接拿值就行了。