C# ASP.NET核心MVC身份登录问题
我在使用ASP.NET Core 3.1 MVC时遇到Microsoft标识问题 当成功登录时,它表示用户已登录,但不会重新指向默认主页。我认为它没有重新定向到主页的原因是因为没有设置cookies,因为即使我成功登录,它也会重定向到再次登录,而不是主页和cookie。PD:我只在http上运行,我没有使用https,因为我没有钱买证书,我想这没关系吧 它说用户在哪里登录 在控制台中: 但什么也没发生,只是重定向到再次登录,其他控制器视图被阻止: 控制器C# ASP.NET核心MVC身份登录问题,c#,asp.net-mvc,asp.net-core,identity,C#,Asp.net Mvc,Asp.net Core,Identity,我在使用ASP.NET Core 3.1 MVC时遇到Microsoft标识问题 当成功登录时,它表示用户已登录,但不会重新指向默认主页。我认为它没有重新定向到主页的原因是因为没有设置cookies,因为即使我成功登录,它也会重定向到再次登录,而不是主页和cookie。PD:我只在http上运行,我没有使用https,因为我没有钱买证书,我想这没关系吧 它说用户在哪里登录 在控制台中: 但什么也没发生,只是重定向到再次登录,其他控制器视图被阻止: 控制器 public class Accou
public class AccountController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
// private readonly IEmailSender _emailSender;
// private readonly ISmsSender _smsSender;
private readonly ILogger _logger;
public AccountController(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
// IEmailSender emailSender,
// ISmsSender smsSender,
ILoggerFactory loggerFactory)
{
_userManager = userManager;
_signInManager = signInManager;
// _emailSender = emailSender;
// _smsSender = smsSender;
_logger = loggerFactory.CreateLogger<AccountController>();
}
//
// GET: /Account/Login
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation(1, "User logged in.");
return RedirectToLocal(returnUrl);
}
// if (result.RequiresTwoFactor)
// {
// return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
// }
if (result.IsLockedOut)
{
_logger.LogWarning(2, "User account locked out.");
return View("Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return View(model);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
//
// GET: /Account/Register
[HttpGet]
[AllowAnonymous]
public IActionResult Register(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
// Send an email with this link
//var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
//var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
//await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
// "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
await _signInManager.SignInAsync(user, isPersistent: false);
_logger.LogInformation(3, "User created a new account with password.");
return RedirectToLocal(returnUrl);
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
我遵循了这一准则:
我错过了什么?我是否缺少任何其他必要的文件或任何其他配置?我是使用ASP.NET核心MVC的新身份(在ASP.NET MVC标准中不是新身份)。这是cookie问题吗?中间件的顺序错误,正确的顺序应该是
app.UseAuthentication();
app.UseAuthorization();
你花了太多时间来解决这个问题,你在一分钟内就解决了。你真是个英雄!等待7分钟,以便我将此标记为已解决。
app.UseAuthentication();
app.UseAuthorization();