如上所述,devise_token_auth有三個API調用來重置密碼。
1. POST調用發送密碼時應重置電子郵件
POST /auth/password
Params: 'email', 'redirect_url'
如:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST https://myapp.com/auth/password -d '{"email":"[email protected]", "redirect_url": "https://myapp.com/auth/sign_in"}'
注意,鑑於redirect_url
必須對應於您希望用戶採取確認和端點重置他們的密碼。
E.g.如果想要重定向到iOS應用程序中的某個位置,請在redirect_url
定義中使用該應用程序方案的URL。例如。手動執行此操作在iOS上:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST https://myapp.com/auth/password -d '{"email":"[email protected]", "redirect_url": "myappStoreAppName://auth/password/edit"}'
2. get調用來驗證密碼重置令牌(點擊電子郵件)
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
如果這是從一個Web應用程序中,「redirect_to的」鏈接應該指向可以填寫password
和password_confirmation
表格的表格。如果密碼重置電子郵件鏈接指向移動應用程序,則取決於該應用程序以創建密碼重置表單。
在這一步最重要的是知道發出請求的客戶端將從Rails應用程序獲取Access-Token
HEADER。
此Access-Token需要保存,因爲這是客戶端將在下一個請求中使用的內容,以保證用戶在用戶更改密碼時進行身份驗證。
3. PUT調用來更新用戶的密碼
PUT /auth/password
Head: 'uid: VALUE', 'client: VALUE', 'access-token: VALUE', 'token-type: Bearer'
Params: 'password', 'password_confirmation'
注意,需要爲這個PUT通話將被提供的水頭值。這些確保我們(現在通過身份驗證的用戶)有權執行密碼更改,並確保我們的用戶即使在更改密碼後仍能繼續保持身份驗證狀態。
E.g.通過捲曲:
curl -v -H 'Content-Type: application/json' -H 'uid: [email protected]' -H 'client: U9FIDbiDbYVulsi1dBpxOQ' -H 'access-token: JbGQi97FTAwsW4n6SZ9aYQ' -H 'Accept: application/json' -X PUT https://myapp.com/auth/password -d '{"password": "foobar", "password_confirmation": "foobar"}'
我已經失去了整整一天,我會很感激這個指導。 – Kelseydh