我是Spring Security的新手并且遇到了一个问题,希望有人在这里帮忙:
DaoAuthenticationProvider仅通过用户名检索用户(当您实现UserDetailsService.loadUserByUsername(String username)时,我的问题是我们的密码是通过DB函数在数据库上进行哈希处理的,这意味着如果我通过用户名检索,则不会与我提供的密码匹配,因为我从DB获得的是一个散列版本。
如何在Spring Security上实现解决方案,在检索User对象并将用户标记为已验证之前,我可以在数据库端匹配用户名和密码?
像UserDetailsService.loadUserByUsernameAndPassword(字符串用户名,字符串密码)这样的东西就是我要找的东西。
我有一种感觉,因为我读过Spring Security永远不会将密码发送到数据库的地方,所以我必须自己做自己的自定义实现。如果我这样做,有人可以指出我如何开始正确的方向吗?
非常感谢任何帮助。谢谢!
答案 0 :(得分:2)
您可以编写UserDetailsServiceImpl extends org.springframework.security.core.userdetails.UserDetailsService
覆盖loadbyusername()
方法。从db读取用户..您的用户将使用哈希密码..
在登录屏幕上,将用户身份验证为login(username, hash(password))
..
他们会匹配..