我发现密码恢复非常困难,因为我从未做过。
到目前为止,我已经拥有以下Web应用程序:
Spring Security,在其中正确地对密码进行了哈希处理,并实现了用户角色并正常工作。
该策略提示了来自stackoverflow的研究:
未知的:
如您所见,对于单个问题,该列表非常严格。因此,希望您能够提供有关逐步操作的指南资源。令我有些惊讶的是,我在Spring Security文档中找不到太多关于此的内容。谢谢。
我是学生,所以真的不知道这样做的行业最佳实践,尤其是在Java的情况下,所以我真的希望任何人都能提供帮助。
这个问题实际上与Spring Security无关。只要您知道用户数据库的结构和所使用的密码编码器,它实际上就是在实现涉及数据访问,Web控制器和发送电子邮件的工作流程。链接应包含随机令牌字符串(使用SecureRandom和base64编码器),并且应将其与userId和时间戳(用于验证链接在其中有效的窗口)一起存储在数据库中。控制器将简单地从传入请求中提取令牌,并使用令牌从数据库加载数据。它将检查时间戳,然后将用户转发到密码输入表单。根据要求,您可能还希望他们回答其他一些安全问题。然后,您将对密码进行验证和编码,然后将其存储在与存储在重置链接表中的userId匹配的帐户中。运行批处理作业以从数据库中删除过期的链接也很有意义。
SecureRandom
Grails Spring Security UI插件已经具有“ 忘记密码”选项,您可以直接使用该密码或用作参考。