gpt4 book ai didi

java - 使用发送到电子邮件的动态 URL 实现 Spring Security 密码恢复的指南

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:39 25 4
gpt4 key购买 nike

我发现很难恢复密码,因为我以前从未做过。

到目前为止,我的网络应用程序具有:

Spring Security,其中密码被正确散列,用户角色实现并正常工作。

该策略提示来自 stackoverflow 的研究:

  1. 用户点击忘记密码按钮,在其中输入他的电子邮件地址。
  2. 动态链接发送到电子邮件地址
  3. 用户打开电子邮件地址中的链接
  4. 将他重定向到密码重置页面

未知的:

  • 如何赋予链接动态特性——生成方法
  • 链接超时 - 此处发现了一些问题,但通常涉及自定义处理程序或 spring 安全功能的扩展
  • 响应此类动态链接的请求映射方法
  • 临时链接存储方法——数据库、 session 等?

如您所见,该列表对于单个问题来说非常严格。所以希望你能提供指导资源来一步一步地做到这一点。我有点惊讶我在 Spring Security 文档中找不到太多关于此的内容。谢谢。

我是一名学生,所以不知道这样做的真正行业最佳实践,尤其是在 Java 环境下,所以我真的希望任何人都能提供帮助。

最佳答案

这个问题实际上与 Spring Security 没有太大关系。如果您知道用户数据库的结构和使用的密码编码器,它实际上只是实现了一个涉及数据访问、Web Controller 和发送电子邮件的工作流。该链接应包含一个随机 token 字符串(例如,使用 SecureRandom 和一个 base64 编码器)并且它应该与 userId 和时间戳一起存储在数据库中(用于验证链接所在的窗口)有效的)。 Controller 将简单地从传入请求中提取 token ,使用 token 从数据库加载数据。它会检查时间戳,然后将用户转发到密码输入表单。根据要求,您可能还希望他们也回答一些其他安全问题。然后,您将验证密码并对密码进行编码,并将其存储在与重置链接表中存储的 userId 相匹配的帐户中。运行批处理作业以从数据库中删除过期链接也是有意义的。

Grails Spring Security UI 插件已经有一个 forgot password您可以直接使用或用作引用的选项。

关于java - 使用发送到电子邮件的动态 URL 实现 Spring Security 密码恢复的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com