ruby-on-rails - 如何使用 Devise Token Auth 通过 API 更改密码? rails 5

标签 ruby-on-rails devise access-token

我正在尝试使用 Devise Token Auth gem 更改用户的密码。但是有些参数我不知道它是否好,因为我是从数据库中提取它们的。具体来说,来 self 的用户表的 Tokens 列。

根据文档告诉我的内容,这是我对它们各自 header 的请求:

PUT /auth/password HTTP/1.1
Host: localhost
Content-Type: application/json;charset=utf-8
token-type: Bearer
access-token: $2a$10$d6b2GP5N3WT4/fR62S1VL.kiLx9w0YA6Rb5aVYQtXMBPImLx9ix2i
client: -Z2_wBWzH1GHiAjCAaHAKA
expiry: 1509654584
uid: my@email.com

password=123456789&password_confirmation=123456789

这是我的用户表的 token 列,对应于我的电子邮件 my@email.com 的用户:

{
    "oJ7t-1kXUFsde9J_euKuZA":{
        "token":"$2a$10$cYAP0ZVndFJz9JUK4tvoOuc96k/JBtgmSyn0cmwvWwy0o.J0XOtKW",
        "expiry":1509642442,
        "last_token":"$2a$10$Boy8Yp2Znb0uOS9tt/3KYum7PX/Jjmb.Igzo5GUs4tDRCejDU5bya",
        "updated_at":"2017-10-19T12:07:22.356-05:00"
    },
    "-Z2_wBWzH1GHiAjCAaHAKA":{
        "token":"$2a$10$d6b2GP5N3WT4/fR62S1VL.kiLx9w0YA6Rb5aVYQtXMBPImLx9ix2i",
        "expiry":1509654584,
        "last_token":"$2a$10$qFTq5JqGUBXayXODsKUSROjjw.TrFYVGtf.EEULCzRWIhMa79ycZS",
        "updated_at":"2017-10-19T15:29:44.204-05:00"
    }
}

但是,我请求的结果总是得到 401 Unauthorized

我正在使用第二个 json 对象,其中我将 key 作为客户端参数和 token 属性,我通过 PUT 将其作为我的 access_token 参数放在我的请求中。

我是否使用我设置的参数正确地执行了我的请求? O 如何获取客户端和访问 token 参数?

最佳答案

它没有准确回答有关 401 未授权错误的问题,但这是我根据 the documentation page 所做的。 .将 config.check_current_password_before_update 设置为 :password 这意味着如果用户想要更新他的密码,他还需要提供他当前的密码。

检查您的 rails routes 以获得正确的路径。我的是:PUT/auth/password/

然后在您的请求正文中:

{"current_password":"old_password","password":"new_password","password_confirmation":"new_password"}

关于 401 未授权错误,as suggested here ,这可能是由于您的用户身份验证所致。

关于ruby-on-rails - 如何使用 Devise Token Auth 通过 API 更改密码? rails 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46839124/

相关文章:

ruby-on-rails - Searchkick分页,限制和偏移问题,滑轨

ruby-on-rails - 即时更改 http_basic_authenticate_with 凭据,rails

ruby-on-rails - 注册时出现Devise Gem错误

ruby-on-rails - 使用附加模型注册 Rails Devise

asp.net-mvc - Azure Active Directory 和单点登录的访问 token

rest - 在 Azure 中获取访问 token 时用户名或密码不正确

ASP.NET 或 Ruby on Rails 适合 Web 开发新手?

ruby-on-rails - 如何在Rails中链接try()和作用域to_s()?

api - Box API token 请求企业配置问题

ruby-on-rails - Devise::TestHelpers 文档不清楚 Devise.mappings[:mapping] 的用法