3

我正在使用 gem clear 进行用户身份验证,但现在我在实现“更改密码”链接时遇到了问题。这就是我所拥有的:

    <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为了什么?我怎样才能将它传递给控制器​​?我在哪里可以得到它?

4

1 回答 1

1

该令牌是密码重置令牌。该编辑密码页面旨在供用户用于完成“忘记密码”工作流程。当用户单击“忘记密码”并提供他们的电子邮件地址时,将生成密码重置令牌。它存储在用户记录中。

用户会收到一封将他们链接到编辑密码页面的电子邮件。重置令牌作为参数包含在该链接中。

我认为这里使用的资源名称 ( password) 具有误导性。我认为,更准确password_reset的说法可能是消除这种混淆。如果您想实现标准的密码更改表单(不是密码重置),我建议为此使用单独的控制器。

于 2015-06-04T02:36:18.290 回答