【发布时间】:2019-12-26 21:48:13
【问题描述】:
我想自定义 Laravel 中忘记密码的表单。
当要求重置密码时,用户除了插入他/她的电子邮件外,还必须回答一个简单的问题(您的第一只宠物的名字、您儿时最好的朋友的名字等)。这是为了避免其他人在知道帐户的电子邮件但不是帐户所有者的情况下要求重置密码。
我还想自定义错误消息,实际上不显示错误。例如,如果插入了无效的电子邮件,则不会显示错误消息“我们找不到具有该电子邮件地址的用户”。我不喜欢它,因为有人可能会通过尝试不同的电子邮件来猜测用户的电子邮件,直到她/他停止收到错误消息。相反,我想显示消息“如果提供的信息正确,您将收到一封电子邮件,其中包含重置密码的链接。”
如何将这些功能添加到 Laravel 身份验证中?
我正在寻找一种无需从头开始创建整个登录系统的解决方案(我认为,如果我尝试从头开始设计所有内容,我可能会遗漏一些东西并造成安全漏洞)。我想保留 Laravel 身份验证系统,只添加这两个功能。
请随意提出其他方法来实现预期结果并使我的问题更清楚。我会很感激的。
【问题讨论】:
-
可以尝试修改
app/Http/Controllers/Auth/ForgotPasswordController.php和resources/views/auth/passwords/email.blade.php。如果您有任何错误,您可以打开一个显示您尝试过的代码的问题。 -
如果他们忘记了秘密问题怎么办? ;)
-
"这是为了避免其他人在知道帐户的电子邮件但不是帐户所有者的情况下要求重置密码。"你为什么关心这个?是真的发生了,还是假设它可能会发生这些额外的麻烦?
-
假设它可能会发生,我会遇到所有这些额外的麻烦 :) 哈哈哈
-
@rits 我想他们不会忘记这个秘密问题。如果他们忘记了并且抱怨,那么我将删除多余的问题并返回之前的身份验证系统。这应该是一个简单的问题(比如,谁是你儿时最好的朋友?谁会忘记这个?),所以我想没有人会忘记答案