我在使用oAuth获取凭据后尝试对用户进行身份验证(如果有所不同,则使用Twitter)。据我所知,我可以直接将Authentication对象放入SecurityContextHolder。我是这样做的:
Authentication auth = new TwitterOAuthAuthentication(member,
userDetailsService.loadUserByUsername(member.getUsername()).getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
这出于某种原因绝对没有。我错过了什么,我该怎么做才能完成需要?
答案 0 :(得分:3)
尝试添加
auth.setAuthenticated(true);
在将身份验证设置为上下文之前。
以下代码适合我(在过滤器类中):
final Authentication auth = new CustomAuthenticationToken(user);
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);