【问题标题】:Spring Security loadUserByUsername - create new user when username is not fuondSpring Security loadUserByUsername - 在找不到用户名时创建新用户
【发布时间】:2016-07-11 00:59:44
【问题描述】:

我正在建立一个可公开访问的培训网站,同时提供训练营类型的培训课程。我想避免注册用户和管理权限的开销,所以我希望在调用 loadUserByUsername 并且找不到用户时简单地创建一个新用户。经过研究,似乎密码无法用于 loadUserByUsername,因为 Spring Security 自己处理实际身份验证,它只希望返回一个 UserDetails 对象。

那么,我的主要问题是:有什么方法可以将密码输入到 loadUserByUsername 函数中?

其次,如果我无法访问密码,我能否以某种方式实现我的用户存储库并在其中包含逻辑以在找不到现有用户时创建新用户?

或者,我已经确定我可以简单地提供一个自动注册过程,但如上所述,我希望用户能够在一个操作中自动创建他们的用户帐户,以便第一次登录。

谢谢!

【问题讨论】:

    标签: java spring-security spring-boot


    【解决方案1】:

    我认为最好的解决方案是创建自己的AuthenticationProvider。您可以从扩展DaoAuthenticationProvider 开始。关键是覆盖您可以访问用户名和密码的身份验证方法(在身份验证中)。如果您使用 DaoAuthenticationProvider 覆盖retrieveUser。

    为此,您可能需要编写自己的 UserDetailsS​​ervice。

    你可以看看这个tutorial on how to write a cutom auth provider。或this post on SO

    【讨论】:

    • 谢谢!我一直在尝试处理您提供的链接,但还没有走远...由于时间限制,我不知道是否能够实现自定义身份验证提供程序,因此我可能会退回到注册过程。感谢您的回复!
    猜你喜欢
    • 2012-07-26
    • 2015-03-27
    • 2016-08-03
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2011-07-17
    相关资源
    最近更新 更多