清关:修改用户密码
Clearance: change user password
我正在使用 gem 许可进行用户身份验证,但现在我在实施 'change password' link 时遇到了问题。这是我的:
<a href="<%= edit_user_password_path(current_user) %>">...</a>
但在 Clearance::passwords_controller
中我们有以下内容:
before_filter :forbid_missing_token, only: [:edit, :update]
...
def forbid_missing_token
if params[:token].to_s.blank?
flash_failure_when_forbidden
render template: 'passwords/new'
end
end
因此它呈现 new
模板而不是 edit
。这个 :token
是做什么用的?我怎样才能将它传递给控制器?我在哪里可以得到它?
令牌是密码重置令牌。该编辑密码页面旨在供用户用来完成 "forgot password" 工作流程。当用户单击 "forgot password" 并提供他们的电子邮件地址时,将生成密码重置令牌。它存储在用户记录中。
用户收到一封电子邮件,link将他们带到编辑密码页面。重置令牌作为参数包含在 link.
中
我认为此处使用的资源名称 (password
) 具有误导性。更准确地说,我认为 password_reset
可能会消除这种混淆。如果你想实现一个标准的密码更改表单(而不是密码重置),我建议你使用一个单独的控制器。
我正在使用 gem 许可进行用户身份验证,但现在我在实施 'change password' link 时遇到了问题。这是我的:
<a href="<%= edit_user_password_path(current_user) %>">...</a>
但在 Clearance::passwords_controller
中我们有以下内容:
before_filter :forbid_missing_token, only: [:edit, :update]
...
def forbid_missing_token
if params[:token].to_s.blank?
flash_failure_when_forbidden
render template: 'passwords/new'
end
end
因此它呈现 new
模板而不是 edit
。这个 :token
是做什么用的?我怎样才能将它传递给控制器?我在哪里可以得到它?
令牌是密码重置令牌。该编辑密码页面旨在供用户用来完成 "forgot password" 工作流程。当用户单击 "forgot password" 并提供他们的电子邮件地址时,将生成密码重置令牌。它存储在用户记录中。
用户收到一封电子邮件,link将他们带到编辑密码页面。重置令牌作为参数包含在 link.
中我认为此处使用的资源名称 (password
) 具有误导性。更准确地说,我认为 password_reset
可能会消除这种混淆。如果你想实现一个标准的密码更改表单(而不是密码重置),我建议你使用一个单独的控制器。