Non*_*oto 4 ruby ruby-on-rails device
我在使用这个 gem 的密码重置功能时遇到问题。 https://github.com/lynndylanhurley/devise_token_auth
这是来自文档。
/password/edit GET
Run Code Online (Sandbox Code Playgroud)
“通过密码重置令牌验证用户。此路由是密码重置确认的目标URL。此路由必须包含reset_password_token和redirect_url参数。这些值将由密码重置请求生成的确认电子邮件自动设置。”
当用户忘记密码时,可以输入注册邮箱,他们将通过电子邮件收到密码重置链接。
发布: https: //example.com/api/auth/password
params = 电子邮件和重定向链接 ( https://example.com/api/auth/password/edit )
我可以通过电子邮件发送密码重置链接,但是当我单击该链接或电子邮件中的“更改我的密码”时,它会跳转到带有令牌的重定向地址。
它显示“您正在查找的页面不存在”。
这可能是路线错误或其他什么,但我不知道。我什至不确定是否应该为重定向链接设置“/password/edit”。
这是 github 的相关链接 https://github.com/lynndylanhurley/devise_token_auth/issues/604
我是否遗漏了某些内容,或者我应该为重定向链接部分设置不同的地址?
如上所述,devise_token_auth 具有三个 API 调用来重置密码。
POST /auth/password
Params: 'email', 'redirect_url'
Run Code Online (Sandbox Code Playgroud)
例如:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST https://myapp.com/auth/password -d '{"email":"foo@gmail.com", "redirect_url": "https://myapp.com/auth/sign_in"}'
Run Code Online (Sandbox Code Playgroud)
请注意,redirect_url给定的必须对应于您希望用户确认和重置其密码的端点。
例如,如果想要重定向到 iOS 应用程序中的某个位置,请在定义中使用该应用程序方案的 URL redirect_url。例如,在 iOS 上手动执行此操作:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST https://myapp.com/auth/password -d '{"email":"foo@gmail.com", "redirect_url": "myappStoreAppName://auth/password/edit"}'
Run Code Online (Sandbox Code Playgroud)
GET /auth/password/edit
Params: 'password_reset_token', 'redirect_url'
E.g. via our iOS app would produce an email link like this: https://myapp.com/auth/password/edit?config=default&redirect_url=myappStoreName%3A%2F%2Fauth%2Fpassword%2Fedit&reset_password_token=Qv6mkLuoy9zN-Y1pKghB
Run Code Online (Sandbox Code Playgroud)
如果这是来自网络应用程序,则“redirect_to”链接应指向可以填写password和表单的表单。password_confirmation如果密码重置电子邮件链接指向移动应用程序,则由该应用程序创建密码重置表单。
Access-Token此步骤中最重要的是知道发出请求的客户端将从Rails 应用程序返回一个HEADER。
需要保存此访问令牌,因为客户端将在下一个请求中使用它来在用户更改密码时保持用户身份验证。
PUT /auth/password
Head: 'uid: VALUE', 'client: VALUE', 'access-token: VALUE', 'token-type: Bearer'
Params: 'password', 'password_confirmation'
Run Code Online (Sandbox Code Playgroud)
请注意需要为此 PUT 调用提供的 HEAD 值。这些确保我们(现在已通过身份验证的用户)有权执行密码更改,并确保我们的用户即使在更改密码后也可以继续保持身份验证。
例如通过卷曲:
curl -v -H 'Content-Type: application/json' -H 'uid: foo@gmail.com' -H 'client: U9FIDbiDbYVulsi1dBpxOQ' -H 'access-token: JbGQi97FTAwsW4n6SZ9aYQ' -H 'Accept: application/json' -X PUT https://myapp.com/auth/password -d '{"password": "foobar", "password_confirmation": "foobar"}'
Run Code Online (Sandbox Code Playgroud)