.NET 5 Cookie 身份验证方案中未添加 Cookie

Cookie does not get added in .NET 5 Cookie Authentication Scheme

我正在学习 .net 5 中的身份验证和授权。这是我目前所掌握的:

"Login.cshtml":

@model LoginViewModel
@{
    ViewData["Title"] = "Login";
}

<h1>Login</h1>

<form method="post">
    <div class="form-group">
        <div class="input-group align-content-center justify-content-center">
            <div class="d-flex flex-column">
                @Html.TextBoxFor(user => user.Email, new { @class = "form-control", @placeholder = "email" })
                @Html.TextBoxFor(user => user.PasswordHash, new { @class = "form-control", @placeholder = "password", @type = "password" })
                <input class="btn btn-primary" type="submit" value="Login" />
            </div>
        </div>
    </div>
</form>

“动作控制器”:

[Route("/Login")]
public IActionResult Login()
{
    return View();
}

[HttpPost]
[Route("/Login")]
public IActionResult Login([Bind] LoginViewModel model)
{
    if (model.Email == "user@fmail.com" && model.PasswordHash == "1234")
    {
        var claims = new List<Claim>
        {
            new Claim(ClaimTypes.Name, "Bar F Har"),
            new Claim(ClaimTypes.Email, "user@fmail.com"),
            new Claim("Age", "25")
        };

        var claimsIdentity = new ClaimsIdentity(claims);

        var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

        HttpContext.SignInAsync(claimsPrincipal);

        return Redirect("/"); // redirects to the page
    }
    else
    {
        return NotFound(); //works!!
    }
}

我检查了调试器。唯一的问题似乎是没有添加 cookie:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
{
    options.Cookie.Name = "Test.Cookie";
    options.LoginPath = "/Login";
});

app.Authentication();app.Authorization(); 已按 app.UseRouting();

之后的顺序正确放置

我错过了什么?

解决这个问题的方法非常简单:
HttpContext.SignInAsync(claimsPrincipal); 更改为 HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal); 就可以了。