[英]Rails Devise - Forgot password asking for login
我正在管理系统上的用户,因此它可以是:recoverable。 一切正常,除非单击链接重置密码,然后要求用户登录。 这没有意义,因为它将通过发送到电子邮件的令牌进行重置。 任何人都面临这个问题,您不知道可能是什么原因? 谢谢!
编辑:
好的,这是我的错误:这里有一个before_action authenticate_user! 在我的应用程序控制器上。 如何仅为该重置密码添加例外?
看看你的before action
在哪个控制器处理此页面(可能是会话控制器或用户控制)方法。 我的猜测是您可能正在拨打诸如authenticate_user!
类的电话authenticate_user!
该链接的操作之前。
您在代码中发现了问题,但我正在回答另一个问题:
如何仅为该重置密码添加例外?
我要更改为:
您应该
authenticate_user!
在ApplicationController
?
显然,既然我提出了这个问题,答案是否定的。
原因如下:
authenticate_user!
不是为ApplicationController
设计的,因为ApplicationController
是每个控制器。 也就是说,它是为限制对控制器的访问而设计的,是的,但不是专门针对ApplicationController
。 首先,您必须添加此内容的原因是,例如,仅允许登录用户编辑自己的文章。 您不会有人来编辑文章,但是您确实希望任何人都可以看到文章。 我对您的应用程序一无所知,但通常情况下,身份验证是一个案例,但有非常特殊的例外。 因此,即使您必须粘贴: authenticate_user!
很多次没关系。 还有另一种方法(这就是为什么我要你的routes.rb
)。
PS您的第一个问题的答案:
before_action :authenticate_user!, unless: 'params[:controller] == "devise_passwords"'
要么
before_action :authenticate_user!, unless: 'params[:controller] == "passwords"'
我忘记了此控制器的字符串表示形式。
但是同样,这很糟糕,并且随着您的应用程序的增长而无法很好地扩展
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.