認証されていないユーザー
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
コンテンツなしの応答になります
サーバーは要求を実行しましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいまたは更新されたメタ情報が含まれる場合があります。これらのメタ情報が存在する場合は、要求されたバリアントに関連付ける必要があります。
認証されたユーザー
パスワードを変更したい認証済みユーザーの場合、PUT
要求は電子メールなしですぐに実行できます(パスワードを更新しているアカウントはサーバーに認識されています)。このような場合、フォームは2つのフィールドを送信します。
PUT : /api/v1/account/password
リクエスト本文:
{
"old":"password",
"new":"password"
}