認証されていないユーザー
エンドポイントでPUT
リクエストを実行しapi/v1/account/password
、ユーザーがパスワードをリセット(更新)したいアカウントを識別するために、対応するアカウントの電子メールのパラメーターが必要です。
PUT : /api/v1/account/password?email={email@example.com}
注: よう@DougDomenyは、 URLのクエリ文字列は、セキュリティ上のリスクがあるとして電子メールを渡す彼のコメントで述べました。GETパラメーターは使用時に公開されませんhttps
(https
そのような要求には常に適切な接続を使用する必要があります)が、他のセキュリティリスクが伴います。このトピックについて詳しくは、こちらのブログ投稿をご覧ください。
リクエスト本文でメールを渡すことは、GETパラメータとして渡すより安全な方法です。
PUT : /api/v1/account/password
リクエスト本文:
{
"email": "email@example.com"
}
応答には、202
受け入れられた応答の意味があります。
リクエストは処理のために受け入れられましたが、処理は完了していません。処理が実際に行われるときに許可されない場合があるため、要求は最終的に処理される場合と処理されない場合があります。このような非同期操作からステータスコードを再送信する機能はありません。
ユーザーはでメールを受信しemail@example.com
、更新リクエストの処理はメールからのリンクで行われたアクションによって異なります。
https://example.com/password-reset?token=1234567890
このメールからリンクを開くと、非表示の入力フィールドの入力としてリンクからのパスワードのリセットトークンを使用するフロントエンドアプリケーションのパスワードのリセットフォームが表示されます(トークンはクエリ文字列としてリンクの一部です)。別の入力フィールドでは、ユーザーが新しいパスワードを設定できます。新しいタイプのパスワードを確認するための2番目の入力は、(タイプミスを防ぐために)フロントエンドでの検証に使用されます。
注意: メールで、ユーザーがパスワードのリセットを初期化しなかった場合は、メールを無視して、現在のパスワードでアプリケーションを通常どおり使用し続けることもできます。
新しいパスワードとトークンを入力としてフォームが送信されると、パスワードのリセットプロセスが実行されます。フォームデータはPUT
再度リクエストとともに送信されますが、今回はトークンを含めて、リソースパスワードを新しい値に置き換えます。
PUT : /api/v1/account/password
リクエストボディ:
{
"token":"1234567890",
"new":"password"
}
応答は次のようになります204
ノーコンテンツ応答
サーバーは要求を満たしましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいまたは更新されたメタ情報を含めることができます(MAY)。存在する場合、要求されたバリアントに関連付ける必要があります(SHOULD)。
認証されたユーザー
パスワードを変更したい認証済みユーザーの場合、PUT
要求は電子メールなしですぐに実行できます(パスワードを更新するアカウントはサーバーに知られています)。そのような場合、フォームは2つのフィールドを送信します。
PUT : /api/v1/account/password
リクエスト本文:
{
"old":"password",
"new":"password"
}