这个问题可能有点抽象,但我想知道实现密码恢复的最佳/标准方法是什么。我正试图在我的代码中实现它,但我开始使用的方法似乎有点迂回/混乱,我想知道“Rails方式”是做什么的。有什么建议吗?
答案 0 :(得分:6)
通常应对密码进行哈希处理(理想情况下使用盐)而不是加密密码,以便无法解密密码。然后,稍后,要检查用户是否正确输入了密码,您可以使用他们输入的任何内容并使用相同的salt和hash函数,并查看它是否与数据库中的哈希值匹配。
以这种方式存储,密码无法恢复。恢复丢失密码的标准方法是:
http://fakesite.com/reset_password?token=long_token_generated_in_step_2
。Devise是Rails的身份验证宝石,其Recoverable strategy遵循这种模式。
有些网站会应用额外的安全检查,因为电子邮件不是100%安全的。例如,您可能要求,要获取密码重置电子邮件,用户必须回答一个秘密问题(通常在创建帐户时设置)。