如何在UserDetailsS​​ervice子类中获取身份验证

时间:2014-11-30 07:53:18

标签: spring spring-security

我正在使用像这样的自定义身份验证

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException{   
     LoggedInUser user = new LoggedInUser();
     ...
     ...
     return new UsernamePasswordAuthenticationToken(user, authentication.getCredentials());
 }

这里我正在为authentication对象

设置一些值

现在我正在使用password-encoder,因此我的自定义身份验证

@Service
public class CustomUserDetailsService implements UserDetailsService {

    @Autowired
    private UserService userService;

    static final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
}

loadUserByUsername内,如何设置Authentication对象?

1 个答案:

答案 0 :(得分:0)

UserDetailsService实现应负责根据提供的ID检索用户详细信息,而不是操纵Authentication。要处理特定的Authentication对象,请实施自定义AuthenticationProvider或扩展将委派给您的DaoAuthenticationProvider以检索用户的现有对象(例如UserDetailsService)。然后可以将此类用户分配给身份验证对象,并从AuthenticationProvider.authenticate(...)方法返回。

查看使用single responsibilityseparation of concerns原则实现的Spring Security DaoAuthenticationProvider