我正在建立一个可公开访问的培训网站,与训练营类型的培训课程相结合。我想避免签署用户和管理权限的开销,所以我希望在调用loadUserByUsername并且找不到用户时简单地创建一个新用户。在研究之后,似乎密码不可用于loadUserByUsername,因为Spring Security自己处理实际的身份验证,它只需要返回一个UserDetails对象。
所以,我的主要问题是:有没有办法将密码输入loadUserByUsername函数?
其次,如果我无法访问密码,我可以以某种方式实现我的用户存储库并在那里包含逻辑,以便在找不到现有用户时创建新用户吗?
或者,我已经确定我可以简单地提供自动注册过程,但如上所述,我希望能够让用户第一次在一个操作中自动创建用户帐户。
谢谢!
答案 0 :(得分:0)
我认为最好的解决方案是创建自己的AuthenticationProvider。您可以从DaoAuthenticationProvider扩展开始。关键是覆盖您可以访问用户名和密码的身份验证方法(在身份验证中)。如果您使用DaoAuthenticationProvider覆盖retrieveUser。
为此,您可能需要编写自己的UserDetailsService。
您可以查看此tutorial on how to write a cutom auth provider。或this post on SO或