wake-up-neo.com

ASP.NET Core 2.0-Authentifizierungs-Cookie nicht festgelegt

Ich habe diesen Artikel ( https://docs.Microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore2x ) von Microsoft befolgt, um mein Authentifizierungsverfahren in meinem .NET Core 2.0 zu migrieren MVC-Anwendung.

Startup.cs (ConfigureServices)

services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

services.AddAuthentication("MyCookieAuthenticationScheme")
        .AddCookie("MyCookieAuthenticationScheme", options => {
            options.AccessDeniedPath = "/Account/Forbidden/";
            options.LoginPath = "/Account/Login/";
        });

Startup.cs (Konfigurieren)

app.UseAuthentication();

AccountController.cs

List<Claim> claims = new List<Claim> {
                        new Claim(ClaimTypes.Name, "testUser"),
                        new Claim(ClaimTypes.Email, model.Email),
                        //new Claim("ID", user.ID.ToString(), ClaimValueTypes.Integer),
                        new Claim(ClaimTypes.Role, "Admin")
                    };

ClaimsIdentity identity = new ClaimsIdentity(claims, "MyCookieAuthenticationScheme");

ClaimsPrincipal principal = new ClaimsPrincipal(identity);

await HttpContext.SignInAsync("MyCookieAuthenticationScheme", principal, new AuthenticationProperties
{
    IsPersistent = false
});

Leider ist mein .NET Cookie nie gesetzt. Dies bedeutet, dass User.Identity.IsAuthenticated immer falsch ist. Ich habe viele Cookie-Optionen ausprobiert, wie das Ändern von Cookie.SameSite oder Cookie.SecurePolicy auf alle möglichen Werte.

Ich arbeite mit Visual Studio 2017, localhost über https, Chrome 61.

4
Bluesight

Ich denke, Sie sollten den Anmeldevorgang mithilfe der UserManager-Klasse von Identity anstelle von HttpContext.SignInAsync bereitstellen. Injizieren Sie IUserManager in Ihren Controller-Konstruktor und melden Sie sich damit an.

AccountController: Controller
{
    private readonly SignInManager<ApplicationUser> _signInManager;

    public AccountController(SignInManager<ApplicationUser> singInManager)
    {
        _signInManager = signInManager;
    }

    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
    {
        var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
        ...
    }

}

Sie können die Cookie-Einstellungen von Identity in Ihrer Datei Startup.cs ändern. Einen Blick riskieren:

https://docs.Microsoft.com/en-us/aspnet/core/security/authentication/identity

1
Orhun