Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring安全和用户详细信息服务_Java_Spring_Spring Security - Fatal编程技术网

Java Spring安全和用户详细信息服务

Java Spring安全和用户详细信息服务,java,spring,spring-security,Java,Spring,Spring Security,我是Spring Security的新手,我正在尝试实现一个用于身份验证的自定义UserDetailsService。让我烦恼的是,这个接口只包含一个方法loadUserByUsername(stringusername),它只将用户名作为参数,并返回一个UserDetails 我想知道为什么这个方法不把任何密码作为参数 Spring如何仅基于用户名对用户进行身份验证 我是Spring security的新手,欢迎对Spring security中的Api和身份验证过程进行任何澄清 验证用户身份

我是Spring Security的新手,我正在尝试实现一个用于身份验证的自定义
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()
方法