ruby-on-rails - 清关:修改用户密码

标签 ruby-on-rails clearance

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

    <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 是做什么用的?我怎样才能将它传递给 Controller ​​?我在哪里可以得到它?

最佳答案

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

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

我认为此处使用的资源名称 (password) 具有误导性。它可能更准确地是 password_reset 这可能会消除这种混淆,我认为。如果您想实现标准的密码更改表单(而不是密码重置),我建议您为此使用一个单独的 Controller 。

关于ruby-on-rails - 清关:修改用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347973/

相关文章:

ruby-on-rails - 如何在 rails 中记录原始 http 请求/响应?

ruby-on-rails - 在 Rails 4 中使用具有间隙的 fixture 进行单元测试用户模型

ruby-on-rails - cucumber 和间隙 : current_user in steps

ruby-on-rails - 通过 API 使用清关

ruby-on-rails - 如何向 Clearance gem 添加权限/角色?

ruby-on-rails - Errno::ENOENT: 功能测试后没有这样的文件或目录@rb_file_s_mtime

ruby-on-rails - 将使用 railapps 创建的 Devise 新用户表单部分化以重新使用它

ruby-on-rails - 具有嵌套属性的复杂 Rails 表单 (Rails 5)

ruby-on-rails - 请求的资源上不存在 'Access-Control-Allow-Origin' header