Ruby on rails 使用jwt设计-可恢复重置密码\u通过\u令牌

Ruby on rails 使用jwt设计-可恢复重置密码\u通过\u令牌,ruby-on-rails,devise,jwt,devise-recoverable,Ruby On Rails,Devise,Jwt,Devise Recoverable,我正在开发一个Rails API,它将通过jwt进行身份验证,并希望用户帐户可以恢复。据推测,在通过电子邮件接收到重置令牌后,用户将提供他们的新密码和带有PUT tohttps://example.com/users/password,由/app/controllers/users/passwords\u controller\35; update处理。目前,我在passwords\u controller.rb中得到了这一点(主要与默认的设计代码相同): 问题在于,reset\u passwo

我正在开发一个Rails API,它将通过jwt进行身份验证,并希望用户帐户可以恢复。据推测,在通过电子邮件接收到重置令牌后,用户将提供他们的新密码和带有PUT to
https://example.com/users/password
,由
/app/controllers/users/passwords\u controller\35; update处理。目前,我在
passwords\u controller.rb
中得到了这一点(主要与默认的设计代码相同):

问题在于,
reset\u password\u by\u token
正在请求授权:

 app/controllers/users/passwords_controller.rb:33:in `update'
Completed 401 Unauthorized in 220ms (ActiveRecord: 60.8ms | Allocations: 6810)
这对我来说似乎很奇怪,因为我希望用户能够使用令牌(除非过期)登录一次以更改密码。此时,我希望返回jwt(因此使用
warden.authenticate
),以便前端应用程序可以立即使用它来登录用户


有人能在这里给我指出正确的方向吗?

从概念上讲,当使用Rails作为API提供程序时,重置密码功能的流程可以如下所示:

  • 用户单击前端上的重置密码链接。前端对POST/auth/password进行API调用,并向用户发送电子邮件
  • 链接(来自用户邮箱)将用户带到服务器(GET/auth/password/edit),在那里验证令牌,然后服务器将使用URL查询参数中的令牌将用户重定向到前端
  • 前端使用该令牌通过参数
    password
    password\u confirmation
    调用PUT/auth/password来设置新密码

从概念上讲,当使用Rails作为API提供程序时,重置密码功能的流程可以如下所示:

  • 用户单击前端上的重置密码链接。前端对POST/auth/password进行API调用,并向用户发送电子邮件
  • 链接(来自用户邮箱)将用户带到服务器(GET/auth/password/edit),在那里验证令牌,然后服务器将使用URL查询参数中的令牌将用户重定向到前端
  • 前端使用该令牌通过参数
    password
    password\u confirmation
    调用PUT/auth/password来设置新密码

谢谢您的回复。我遇到的问题是在你提到的最后几个阶段。我想我现在可能有一个解决方案,但它需要更多的工作。谢谢你的答复。我遇到的问题是在你提到的最后几个阶段。我想我现在可能有了一个解决方案,但它需要更多的工作。
 app/controllers/users/passwords_controller.rb:33:in `update'
Completed 401 Unauthorized in 220ms (ActiveRecord: 60.8ms | Allocations: 6810)