ruby-on-rails - 设计 - 在令牌无效的情况下不想打开重置密码页面
问题描述
我正在使用devise gem
.
如果设计 forget_password_token
无效或已使用,我不想打开重置密码页面(通过我的电子邮件收到) 。
现在默认情况下,它要求我添加新密码和密码确认,然后当我提交时,它说“令牌已过期”
我只想添加在电子邮件中发送的过期设备重置密码链接的概念。
请帮忙!
谢谢
解决方案
我不确定您使用的是什么版本的设计。所以我将通过参考来解释我的想法devise 3.2.4
。
里面有devise
一个叫做Recoverable
. 你可以看看这里。在这个模块中,你可以找到一个方法reset_password_period_valid?
它看起来像这样:
def reset_password_period_valid?
reset_password_sent_at && reset_password_sent_at.utc >= self.class.reset_password_within.ago.utc
end
你可以从这个方法开始。第二件事是使用特殊控制器中的方法,查看PasswordsController
. devise
你可以看看这里。
您可以覆盖或修改的方法:
# GET /resource/password/edit?reset_password_token=abcdef
def edit
self.resource = resource_class.new
resource.reset_password_token = params[:reset_password_token]
end
# PUT /resource/password
def update
self.resource = resource_class.reset_password_by_token(resource_params)
yield resource if block_given?
if resource.errors.empty?
resource.unlock_access! if unlockable?(resource)
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, flash_message) if is_flashing_format?
sign_in(resource_name, resource)
respond_with resource, location: after_resetting_password_path_for(resource)
else
respond_with resource
end
end
推荐阅读
- google-cloud-platform - Can not deploy any revisions (old or first) to Cloud Run
- python - Python, Regular Expression, string to string with dots
- mysql - Mysql如何创建EQUAL约束?
- python - 如何从 zip 文件夹中的 csv 文件中读取数据并将 csv 文件中的数据保存到数据库中?
- django - 当用户上传图像时,我是否每次都必须运行 collectstatic 来提供图像?
- c# - 简单注射器 - 值不能为空。参数名称:userManager
- algorithm - 找到包含最多“冲突对”的 m x m 方格?
- javascript - “expo build:...”命令抛出同样的错误
- powershell - 电源外壳; 试图让 .replace 或 -replace 循环遍历单个文件并每次用不同的东西替换同一行
- ruby - 如何在 Debian 上安装 Jekyll