. Net Core 3.0 Cook ie Auth. Авторизовать атрибут всегда перенаправляя - PullRequest
0 голосов
/ 22 января 2020

Я наконец-то дошел до преобразования некоторых. Net Framework-проектов в Core (3.0). В настоящее время я просто смотрю на проверку подлинности Cook ie и запускаю простой пример.

У меня есть заявки и логин ie, созданный с допустимыми данными, но любое действие контроллера с [Авторизация] всегда перенаправляет на страницу входа (что означает, что мы не вошли в систему). Однако на странице входа в систему я вывел утверждения и состояние IsAuthenticated, и он возвращает действительные данные.

Функция входа в систему

 var claims = new List<Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, "ID"),
                new Claim(ClaimTypes.Name, "TEST"),
                new Claim(ClaimTypes.GivenName, "Test"),
                new Claim(ClaimTypes.Surname, "TEST"),
                new Claim(ClaimTypes.DateOfBirth, DateTime.Now.ToString("o"), ClaimValueTypes.DateTime)
            };

            var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
            var principal = new ClaimsPrincipal(identity);
            await HttpContext.SignInAsync(principal);

Пример 'Безопасная зона'

        [Authorize()]
        public IActionResult Secure()
        {
            return View();
        }

Настройка служб:

        services.AddControllersWithViews();

        services.AddMvc();

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

Настройка при запуске.

1 Ответ

1 голос
/ 22 января 2020

Согласно комментарию: иногда люди забывают вызвать app.UseAuthentication(); на очень ранней стадии в конвейере промежуточного программного обеспечения, и в результате HttpContext.User не будет установлен правильно.

    <b>app.UseAuthentication();</b>   // this line is important
    app.UseAuthorization();

Лично, когда аутентификация не работает, я сначала проверил, включил ли я AuthenticationMiddleware

...