我正在尝试构建一个rails API,并使用devise_token_auth gem进行使用令牌的用户身份验证。Devise_token_auth重置密码流401错误
我设法正确地设置了一切,只是遇到了问题。每当我尝试重置密码时,我都会从API获取401未经授权的错误。
的流程如下:
- 用户点击“忘记了密码”按钮
- 用户被重定向到一个前端应用程序与一个形式插入其电子邮件
- 前端应用发出POST请求发送到API 'AUTH /密码' 与电子邮件和REDIRECT_URL PARAMS
- 所述API通过生成reset_password_token和发送电子邮件到电子邮件参数
- 用户内提供的电子邮件地址来响应此请求点击在电子邮件中的链接,它通过口令重置带来他们的“验证用户令牌”端点(GET /密码/编辑)
- 这个端点验证用户,并将其重定向到REDIRECT_URL
- 这REDIRECT_URL是在前端一个网页,其中包含密码和password_c onfirmation字段
- 用户提交该前端页,它发送到API的请求的形式:用密码和password_confirmation PUT/AUTH /密码参数
- 的API更改用户的密码和回复成功消息
我的问题发生在步骤8和9之间,我得到401未经授权的响应。这是为什么?我能做些什么来解决这个问题?
编辑:
方关于该问题的文件和线程,我意识到它与头做。然而,我不知道如何使用Ruby on Rails管理请求中的标题。
编辑2:
我设法弄清楚问题出在哪里。我需要通过访问令牌,客户端和用户ID作为标题。我有机会获得这些信息,我试图通过执行以下操作来设置请求头:
http = Net::HTTP.new("127.0.0.1", "3000")
request = Net::HTTP::Put.new("/api/v1/auth/password")
request.add_field('uid', @@sens_pms["uid"])
request.add_field('client', @@sens_pms["client_id"])
request.add_field('access-token', @@sens_pms["token"])
response = http.request(request)
然而,新的问题就来了,我这样做的时候。服务器(API)应用程序引发以下错误:
ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow)
重要信息:我在开发环境中做这个(没有nginx的,只是使用WEBrick)
感谢上述“EDIT2” - 我有同样的问题。它在文档中不太清楚,它们必须作为头文件以及POST参数一起发送。不幸的是,我不知道你使用的图书馆足够好,知道你正在形成这些标题的问题。我使用https://www.getpostman.com/,它可以轻松发送标题等。 – Todd