Java Spring安全和用户详细信息服务
我是Spring Security的新手,我正在尝试实现一个用于身份验证的自定义Java Spring安全和用户详细信息服务,java,spring,spring-security,Java,Spring,Spring Security,我是Spring Security的新手,我正在尝试实现一个用于身份验证的自定义UserDetailsService。让我烦恼的是,这个接口只包含一个方法loadUserByUsername(stringusername),它只将用户名作为参数,并返回一个UserDetails 我想知道为什么这个方法不把任何密码作为参数 Spring如何仅基于用户名对用户进行身份验证 我是Spring security的新手,欢迎对Spring security中的Api和身份验证过程进行任何澄清 验证用户身份
UserDetailsService
。让我烦恼的是,这个接口只包含一个方法loadUserByUsername(stringusername)
,它只将用户名作为参数,并返回一个UserDetails
我想知道为什么这个方法不把任何密码作为参数
Spring如何仅基于用户名对用户进行身份验证
我是Spring security的新手,欢迎对Spring security中的Api和身份验证过程进行任何澄清 验证用户身份不是
UserDetailsService
的工作。这是AuthenticationProvider
的责任
例如,DaoAuthenticationProvider
只使用UserDetailsService
按用户名加载用户,然后根据该用户验证UsernamePasswordAuthenticationToken
,查看密码是否匹配
请查看
DaoAuthenticationProvider
的源代码,了解如何在后台执行此操作。如果数据库中存储了用户,是否必须提供AuthenticationProvider?是的,如果要使用自定义UserDetails服务。查看此答案,了解有关如何使用自定义UserDetails设置authentication manager的详细信息服务:UserDetails服务用于授权用户并根据需要从Ldap/DB加载用户信息。如果要根据DB对用户进行身份验证,则可以编写自己的自定义AuthenticationProvider
并重写authenticate()
方法