我正在Spring Boot项目中处理安全层,并面临以下问题:
SecurityContextHolder.getContext().getAuthentication()
此代码返回:
UserDetails
经过身份验证的用户的对象因此,我希望将此代码配置为针对这两种情况返回UserDetails
。我该怎么办?
我想,我需要实现自定义AnonymousAuthenticationFilter
。我对么?
答案 0 :(得分:3)
我想,我需要实现自定义AnonymousAuthenticationFilter。 我是对的吗?
有一种更简单的方法,那就是HttpSecurity
DSL的anonymous()
方法。只需使用该块设置所需的principal
:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// other configuration methods
@Override
protected void configure(HttpSecurity http) throws Exception {
UserDetails anonymousUserDetails = // your custom UserDetails for anonymous case
http
// other configurations
.anonymous()
.principal(anonymousUserDetails);
}
}
使用Null Object Pattern - ish方法对于匿名用户的自定义实现可能是一个好主意。