Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心MVC身份登录问题_C#_Asp.net Mvc_Asp.net Core_Identity - Fatal编程技术网

C# ASP.NET核心MVC身份登录问题

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

我在使用ASP.NET Core 3.1 MVC时遇到Microsoft标识问题

当成功登录时,它表示用户已登录,但不会重新指向默认主页。我认为它没有重新定向到主页的原因是因为没有设置cookies,因为即使我成功登录,它也会重定向到再次登录,而不是主页和cookie。PD:我只在http上运行,我没有使用https,因为我没有钱买证书,我想这没关系吧

它说用户在哪里登录

在控制台中:

但什么也没发生,只是重定向到再次登录,其他控制器视图被阻止:

控制器

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();