簡體   English   中英

使用 ASP.NET 核心標識登錄時出現錯誤 400

[英]Error 400 on login with ASP.NET Core Identity

我有一個使用Microsoft.AspNetCore.Identity和 .NET Core 2.2 運行了 4 年的應用程序。 我要進行修改,並取出舊文件。ZIP。 我使用 VS 2017 及時完成了這個項目。現在我使用 VS 2022。

<div class="container">
    <section class="login_section">
        <div class="img-responsive">
            <img src="~/images/Logo.PNG" class="img-fluid" />
        </div>
        <form id="account" method="post">
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="form-group">
                <input asp-for="Input.Email" class="form-control" placeholder="Courriel" />
                <span asp-validation-for="Input.Email" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input asp-for="Input.Password" class="form-control" placeholder="Mot de passe" />
                <span asp-validation-for="Input.Password" class="text-danger"></span>
            </div>             
            <div class="form-group">
                <button type="submit" class="btn btn-primary">Connexion</button>
            </div>
        </form>

    </section>
</div>
@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}



[AllowAnonymous]
public class LoginModel : PageModel
{
    private readonly SignInManager<ApplicationUser> _signInManager;
    private readonly ILogger<LoginModel> _logger;

    public LoginModel(SignInManager<ApplicationUser> signInManager, ILogger<LoginModel> logger)
    {
        _signInManager = signInManager;
        _logger = logger;
    }

    [BindProperty]
    public InputModel Input { get; set; }

    public IList<AuthenticationScheme> ExternalLogins { get; set; }

    public string ReturnUrl { get; set; }

    [TempData]
    public string ErrorMessage { get; set; }

    public class InputModel
    {
        [Required]
        [EmailAddress]
        [Display(Name = "Courriel")]
        public string Email { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Display(Name = "Remember me?")]
        public bool RememberMe { get; set; }
    }

    public async Task OnGetAsync(string returnUrl = null)
    {
        if (!string.IsNullOrEmpty(ErrorMessage))
        {
            ModelState.AddModelError(string.Empty, ErrorMessage);
        }

        returnUrl = returnUrl ?? Url.Content("~/");

        // Clear the existing external cookie to ensure a clean login process
        await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);

        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

        ReturnUrl = returnUrl;
    }

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
        returnUrl = returnUrl ?? Url.Content("~/");

        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);

            if (result.Succeeded)
            {
                var user = await _signInManager.UserManager.FindByEmailAsync(Input.Email);
                var roles = await _signInManager.UserManager.GetRolesAsync(user);
                return LocalRedirect(returnUrl);
            }               

            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToPage("./Lockout");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return Page();
            }
        }

        // If we got this far, something failed, redisplay form
        return Page();
    }
}

啟動程序時,出現錯誤:HTTP ERROR 400

然而,這個項目已經運行了好幾年。

我不能把手指放在波波上。 我知道它仍在 NET Core 2.2 中,但我想在遷移之前讓它工作。 有人知道發生了什么嗎?

您現在在 Visual Studio 22 上切換到 DOT NET 6 版本。身份隨着時間的推移發生了變化。 您需要再次設置身份。 在 .NET 6 中,只有 Program.cs class 而不是 Startup.cs,因此您可能必須配置 Program.cs class 中的所有設置。

請檢查如何設置和配置 ASP.NET 核心標識,這將對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM