私は理解できない本当に奇妙な状況があります。ExternalLogin確認の返信ユーザーが既に存在します
私は、GoogleとFacebookの認証を持つMVC Webアプリケーションを持っています。ユーザーが認証されると、登録のために
ExternalLoginCallback
アクションにリダイレクトされます。これはすべてのかなり標準ですif (User.Identity.IsAuthenticated) { return RedirectToAction("Index", "Home"); } if (ModelState.IsValid) { // Get the information about the user from the external login provider var info = await AuthenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return View("ExternalLoginFailure", "_UnauthorizedLayout"); } var firstName = GetUserClaim(info, ClaimTypes.GivenName); var lastName = GetUserClaim(info, ClaimTypes.Surname); var user = new ApplicationUser { UserName = model.Email, FirstName = firstName, LastName = lastName, Email = model.Email }; var result = await UserManager.CreateAsync(user); if (result.Succeeded) { // add login result = await UserManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { result = await AddUserClaims(user, info); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); return RedirectToLocal(returnUrl); } } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return View("ExternalLoginConfirmation", "_UnauthorizedLayout", model);
:ユーザーがExternalLoginConfirmation
アクションを使用して、システムに登録されている - 電子メールアドレスを入力した後
。
問題は、一部のユーザーがfacebook/googleを使用して認証した後に登録しようとしていると報告し、ユーザーが既に存在しているというエラーが表示されることです。これは決して登録されていない複数の電子メールで試してみたものです。
私は自分のコンピュータでこれを再現することはできませんでした。私は唯一の問題は、この行に
エラーが存在するユーザーを返すvar result = await UserManager.CreateAsync(user);
であると想定できます。私はユーザーがまだ登録されていないと100%肯定的です。私はここに何らかの競争状態があると思います。本当にいい考えはありません。
どのようなヘルプが多くのappriciatedでしょう!