@MrPhelko
.Net Full Stack Developer

Как создать один api-метода для авторизованного и не авторизованного пользователя в .net core 2?

Всем привет. в .net core есть возможно отрезать неавторизованным пользователям доступ к методам с помощью атрибута Authorize. Но я хочу сделать один метод для и тех и тех, но с одним условием если пользователь пришел не авторизованный, я не хочу отдавать часть данных, каким образом это можно сделать в теле метода.

К сожалению this.User не работает без атрибута Authorize
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
@MrPhelko Автор вопроса
.Net Full Stack Developer
решил следующим способом, написал расширение для контекста
public static string GetUserId(ClaimsPrincipal user)
        {
            return user.FindFirst(OpenIdConnectConstants.Claims.Subject)?.Value?.Trim();
        }

        public static async Task<(bool IsAuth, string UserId)> GetUserId(this HttpContext conntext)
        {
            var auth = await conntext.AuthenticateAsync(OpenIddictValidationDefaults.AuthenticationScheme);

            return (auth.Succeeded, GetUserId(auth.Principal));
        }

и в методе вызываю его
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы