Jeer
@Jeer
уверенный пользователь

Как починить авторизацию .net core после миграции на 3.1?

Всем привет.
У меня есть проект .net core 2.1 с ангуляром. Я мигрировал на .net core 3.1, изменений было по минимуму, но авторизация больше не работает.
Проблема явно в классе Startup.cs, но я уже продолжительное время бьюсь бесцельно и взываю к помощи. User.Identity.IsAuthenticated теперь всегда false
В ConfigureServices у меня такое:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie();
services.AddAuthorization(); // добавил после миграции, не помогло

services.AddMvc();


В Configure
app.UseRouting();

            app.UseCookiePolicy(); // добавил после миграции, не помогло
            app.UseAuthentication(); // после роутинга, но до эндпоинтов
            app.UseAuthorization(); // после роутинга, но до эндпоинтов

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHub<ChatHub>("/chat");
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller}/{action=Index}/{id?}");
            });


На всякий случай привожу код SignIn, но он был рабочий, тут ничего не трогал
var claims = new List<Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.UserName)
            };

            foreach (var role in user.Roles)
            {
                claims.Add(new Claim(ClaimTypes.Role, ((int)role).ToString()));
            }

            var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                new ClaimsPrincipal(identity));


Так же в инструментах разработчика хрома на вкладке Application Cookies пусто
  • Вопрос задан
  • 82 просмотра
Решения вопроса 2
Jeer
@Jeer Автор вопроса
уверенный пользователь
Добрый день,
Отпишусь как решилось: в инструментариях гугл хрома на том запросе, где происходит аутентификация, на заголовке Set-Cookie висел жёлтый треугольник с восклицательным знаком. А если навести курсор, то была и подсказка "this set-cookie was blocked..." дальше я не запомнил, прогуглил фразу и оказалось, что надо было зайти в гугловских дев тулсах на вкладку Application и нажать на Clear site data.
То есть, код у меня рабочий и на другом компе отработал бы, так получилось вследствие того, что я был авторизован на локалхосте с предыдущей версии .net core, и из-за того, что произошёл переход на новую версию, хром не смог чего-то там перезаписать и куки просто не устанавливались. При этом в разделе Cookies было пусто, быть может вручную ранее чистил, не помню.
В общем, вот такое колдунство. Большое спассибо Василию Банникову
Ответ написан
vabka
@vabka Куратор тега C#
Токсичный шарпист
По коду вроде всё так, как надо.
Есть предположение, что проблема на клиентской стороне - посмотрите, приходит ли Set-Cookie от сервера и как куки пользуются клиентом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы