あるリクエストでパスワードのリセット トークンを生成しましたが、次のリクエストでパスワードをリセットしようとすると、無効なトークンと表示されます。
public async Task<string> GetResetToken(string userId)
{
var token = await _userManager.GeneratePasswordResetTokenAsync(userId);
return token;
}
public async Task<IdentityResult> ResetPassword(string userId, string token, string newPassword)
{
var result = await _userManager.ResetPasswordAsync(userId, token, newPassword);
return result;
}
これら 2 つの関数は、それぞれの API エンドポイントによって呼び出されます。プロセス全体の流れは次のとおりです。
- ウェブサイトにメールを入力
- API がトークンを生成し、リセット リンクが記載されたメールが送信されます
- リセット リンクをクリックすると、パスワードのリセット ページが表示されます
- ページは再度 API にヒットしてパスワードをリセットします
API が無効なトークンを返すだけなので、ステップ 4 以外はすべて機能します。生成されたトークンが手順 4 で受け取ったトークンとまったく同じであることを確認しました。