使用Hibernate和哈希密码的Spring Security DB身份验证?
我正在尝试设置SpringSecurity3,以便根据我的Hibernate3数据库对用户进行身份验证。我只在数据库中存储密码的sha1散列(不是明文) 我已经看过和,它们告诉我实现自己的UserDetailsService。不幸的是,loadUserByUsername吐出的UserDetails似乎需要明文密码,而我没有明文密码使用Hibernate和哈希密码的Spring Security DB身份验证?,hibernate,authentication,hash,passwords,spring-security,Hibernate,Authentication,Hash,Passwords,Spring Security,我正在尝试设置SpringSecurity3,以便根据我的Hibernate3数据库对用户进行身份验证。我只在数据库中存储密码的sha1散列(不是明文) 我已经看过和,它们告诉我实现自己的UserDetailsService。不幸的是,loadUserByUsername吐出的UserDetails似乎需要明文密码,而我没有明文密码 这通常是如何处理的?Spring Security真的能满足我的需要吗?我遗漏了什么吗?当您设置UserDetails服务时,spring使用该服务加载用户,然后将
这通常是如何处理的?Spring Security真的能满足我的需要吗?我遗漏了什么吗?当您设置UserDetails服务时,spring使用该服务加载用户,然后将其与登录信息进行比较。也就是说,它会比较密码。 但是,您可以配置密码编码器: 或者您只需编写自己的加载用户并决定用户是否已成功登录。只需实现接口 AuthenticationProvider并设置配置
<authentication-manager>
<authentication-provider ref="myAuthenticationProvider"/>
</authentication-manager>
<bean id="myAuthenticationProvider"
class="stackoverflow.SuperduperMegaAuthenticationProvider">
</bean>
通常情况下,Userdetails包含散列密码,您只需配置Spring Security,使用正确的密码进行身份验证
<password-encoder hash="md5"/>
在堆栈溢出应答@中查找上面的密码编码器行
在这种情况下,您应该将此行替换为:
<password-encoder hash="sha"/>