我是Spring Security的新手,我正在尝试实现自定义UserDetailsService
进行身份验证。困扰我的是,这个接口只包含一个方法loadUserByUsername(String username)
,它只接受用户名作为参数并返回UserDetails
。
我想知道为什么这个方法不会将任何密码作为参数。
Spring如何仅根据用户名对用户进行身份验证?
我是Spring安全的新手,欢迎任何关于Api和Spring Security中的身份验证过程的澄清。
答案 0 :(得分:6)
UserDetailsService
的任务不是验证用户身份。这是AuthenticationProvider
的责任。
例如,DaoAuthenticationProvider
只使用UserDetailsService
按用户名加载用户,然后针对该用户验证UsernamePasswordAuthenticationToken
以查看密码是否匹配。
查看DaoAuthenticationProvider
的源代码,了解幕后如何做到这一点。