新しいMicrosoft Identity Frameworkに関するドキュメントは少しばかり見えます。私は現在、標準のプロジェクトテンプレートを変更しています。二要素認証でユーザーにサインインしようとすると、何か不思議な行為に遭遇しました。SignInManager.SendTwoFactorCodeAsyncがfalseを返す原因は何ですか?
私たちはSMSを介して2FAのみを許可しているので、ユーザーがコードをどのようにしたいかを選択するオプションをバイパスしました。 2FAを持つユーザーと検証電話番号がログインしようとしたときに代わりに、彼らはこのコードをトリガー:
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.RequiresVerification:
if (!await SignInManager.SendTwoFactorCodeAsync("Phone Code"))
{
TempData["ErrorMessage"] = "We could not verify your account. Please try again.";
return RedirectToAction("Error", "Error");
}
return RedirectToAction("VerifyCode", new { Provider = "Phone Code", ReturnUrl = returnUrl, RememberMe = model.RememberMe });
// other cases
}
ほとんどの時間、これは正常に動作します。しかし、ユーザーがログオフした後、最初にログオンし直すと、SendTwoFactorCodeAsync
はfalseを返し、エラーページに移動します。
SendTwoFactorCodeAsync
は、初めてログアウトしたユーザーが呼び出されたときに一貫して失敗するシナリオはありますか?
ソリューションの内容を詳しく説明できますか。私はあなたの質問と同じ振る舞いをしていますが、答えは本当に解決策を明らかにしていません。 –
@DustinLaineこれは機能コードです。したがって、userIdがnullの場合にのみfalseを返します。つまり、何らかの理由でユーザーが認識されていないということです。 –
ありがとう、はい私はちょうどなぜか分からない。最初にログインしてからログアウトし、もう一度ログインしてください。そのメソッドは真であり、 'GetVerifiedUserIdAsync'を引き出すと、私はguidとnullを取得します。あなたの質問に奇妙に似ているようです。 –