почему повторно не срабатывает Аутентификация через Google на ASP.NET MVC

В чём дело? Когда я вхожу в аккаунт Гугл первый раз, всё срабатывает отлично, когда я выхожу и вхожу заново в тот же аккаунт, то ничего не срабатывает вообще, меня просто возвращает на ту же страницу входа

Вот целый скрипт Контроллера который отвечает за всю аутификацию и авторизацию

public class AccountController : Controller
    {
        public SignInManager<ApplicationUser> _signInManager { get; }
        public UserManager<ApplicationUser> _userManager { get; }

        public AccountController(SignInManager<ApplicationUser> signInManager, UserManager<ApplicationUser> userManager)
        {
            _signInManager = signInManager;
            _userManager = userManager;
        }
        [AllowAnonymous]
        public async Task<IActionResult> Login(string returnUrl)
        {
            var model = new LoginViewModel()
            {
                ReturnUrl = returnUrl,
                ExternalLogin = await _signInManager.GetExternalAuthenticationSchemesAsync(),
                
            };       
            return View(model);
        }

        public IActionResult Index()
        {
            ViewBag.UserName = User.Identity.Name;
            return View();
        }

        [AllowAnonymous]
        [HttpPost]
        public async Task<IActionResult> Login(LoginViewModel model)
        {
            if(!ModelState.IsValid)
                return View(model);
            var user = await _userManager.FindByNameAsync(model.UserName);
            if (user == null)
            {
                ModelState.AddModelError("", "UserNotFound");
                return View(model);
            }
            var result = await _signInManager.PasswordSignInAsync(user, model.Password, true, false);
            if (result.Succeeded)
            {
                return Redirect(model.ReturnUrl);
            }
            return View(model);
        }
        public IActionResult LogOff()
        {
            _signInManager.SignOutAsync();
            return Redirect("/home/index");
        }

        [HttpPost]
        [AllowAnonymous]
        public IActionResult ExternalLogin(string provider, string returnUrl = null)
        {
            var redirectUrl = Url.Action(nameof(ExternalLoginCallback), null, new { returnUrl });
            var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
            return Challenge(properties, provider);
        }
        [HttpGet]
        [AllowAnonymous]
        public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null)
        {
            var info = await _signInManager.GetExternalLoginInfoAsync();
            if (info == null)
            {
                return this.Redirect("/Login");
            }

            var email = info.Principal.FindFirstValue(ClaimTypes.Email);
            var name = info.Principal.FindFirstValue(ClaimTypes.Name) ?? info.Principal.Identity.Name;

            var user = new ApplicationUser(name);
            user.Email = email;

            var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false, false);

            if (result.Succeeded)
            {
                return RedirectToAction("Index");
            }
            return RedirectToAction("RegisterExternal", new ExternalLoginViewModel()
            {
                ReturnUrl = returnUrl,
                UserName = info.Principal.FindFirstValue(ClaimTypes.Name)
            }); 
        }

        [AllowAnonymous]
        public IActionResult RegisterExternal(ExternalLoginViewModel model)
        {
            return View(model);
        }
        [HttpPost]
        [AllowAnonymous]
        [ActionName("RegisterExternal")]
        public async Task<IActionResult> RegisterExternalConfirmed(ExternalLoginViewModel model)
        {
            var info = await _signInManager.GetExternalLoginInfoAsync();
            if (info == null)
            {
                return RedirectToAction("Login");
            }

            var user = new ApplicationUser(model.UserName);
            user.Email = info.Principal.FindFirstValue(ClaimTypes.Email);
            var result = await _userManager.CreateAsync(user);

            if (result.Succeeded)
            {
                var claimsResult = await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "Administrator"));
                if (claimsResult.Succeeded)
                {
                    var identityResult = await _userManager.AddLoginAsync(user, info);
                    if (identityResult.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, false);
                        return RedirectToAction("Index");
                    }
                }
            }
            return View(model);
        }
    }

Views/Account/ExternalRegister.cshtml

@model ExternalLoginViewModel

<h1>External Register</h1>

<form asp-controller="Admin" asp-action="RegisterExternal" method="post">
    @*<div asp-validation-summary="All"></div>*@
    <input hidden asp-for="ReturnUrl" />
    <div>
        <label>UserName</label>
        <input asp-for="UserName" />
        <span asp-validation-for="UserName"></span>
    </div>
    <p><button type="submit">Save</button></p>
</form>

Views/Account/Login.cshtml

@model LoginViewModel

<h1>Login</h1>
<form method="post" asp-action="ExternalLogin" asp-controller="Account">
    @foreach (var item in Model.ExternalLogin)
    {
        <button type="submit" value="@item.Name" name="provider">@item.DisplayName</button>
    }
</form>

(Про вход второй раз) Вроде строка логина есть

 var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false, false);

И result в этот момент равняется Succeeded , но всё равно в аккаунт он не входит, не понимаю в чём беда то


Ответы (0 шт):