![](/img/trans.png)
[英]Multiple Login Page with Identity Core and Asp.net Core 3.1
[英]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.