3

遵循此解决方案https://stackoverflow.com/a/47761138/7818637我正在使用devise_token_authgem 进行身份验证的 Rails 上设计忘记密码流 API。

1. 发送密码重置电子邮件的 POST 调用

网址:http://localhost:3000/client/auth/password

表单数据:{email: 'john@gmail.com', redirect_url: 'http://localhost:3000/client/auth/sign_in'}

拨打电话以发送密码重置电子邮件

2. 验证密码重置令牌的 GET 调用(在电子邮件中单击)

我在控制台上收到以下 URL,其中包含redirect_urland reset_password_token

http://localhost:3000/client/auth/password/edit?config=default&redirect_url=http%3A%2F%2Flocalhost%3A3000%2Fclient%2Fauth%2Fsign_in&reset_password_token=ZBsx64Gk1VBraM3THZTn

当我调用此 URL 时,我收到以下错误:

Use POST /sign_in to sign in. GET is not supported.

调用以验证密码重置令牌

我已经尝试过的:

按照这里的问题,我发现我已经include DeviseTokenAuth::Concerns::SetUserByToken在我的控制器中使用了。

控制台日志:

控制台日志

4

1 回答 1

0

当用户单击您电子邮件中的 url 时,您会将他们重定向到/password/edit路径。在此操作中,您验证用户。如果一切顺利,用户将被重定向到redirect_url,这是您的情况下的登录路径。

您应该更改电子邮件中的redirect_url并创建将重定向用户的操作和视图。在这个新视图中,您将拥有字段,以便用户可以重置密码。确保新网址将使用“GET”。在提交表单时将用户重定向到登录路径,以便他/她可以使用新密码登录。

请阅读https://devise-token-auth.gitbook.io/devise-token-auth/usage/reset_password了解更多信息。

于 2020-05-25T07:54:09.300 回答