在spring security中用用户名和密码加载UserDetails?

时间:2011-09-01 11:24:27

标签: spring-security

我是Spring Security的新手并且遇到了一个问题,希望有人在这里帮忙:

DaoAuthenticationProvider仅通过用户名检索用户(当您实现UserDetailsS​​ervice.loadUserByUsername(String username)时,我的问题是我们的密码是通过DB函数在数据库上进行哈希处理的,这意味着如果我通过用户名检索,则不会与我提供的密码匹配,因为我从DB获得的是一个散列版本。

如何在Spring Security上实现解决方案,在检索User对象并将用户标记为已验证之前,我可以在数据库端匹配用户名和密码?

像UserDetailsS​​ervice.loadUserByUsernameAndPassword(字符串用户名,字符串密码)这样的东西就是我要找的东西。

我有一种感觉,因为我读过Spring Security永远不会将密码发送到数据库的地方,所以我必须自己做自己的自定义实现。如果我这样做,有人可以指出我如何开始正确的方向吗?

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以编写UserDetailsS​​erviceImpl extends org.springframework.security.core.userdetails.UserDetailsService

覆盖loadbyusername()方法。从db读取用户..您的用户将使用哈希密码..

在登录屏幕上,将用户身份验证为login(username, hash(password)) ..

他们会匹配..