NikFaraday
@NikFaraday
Student full-stack Developer

Как выбрать нужный ClaimIdentity из ClaimPrincipal, если их несколько штук?

Здравствуйте!

Я никогда так не делал и вот пришла пора. Этот случай меня немного сломал, по этому я обратился сюда. Есть у меня один объект типа ClaimPrincipal в который, при авторизации, закидывается несколько объектов типа ClaimIdentity. Когда мне нужно получить один из этих объектов или сделать выборку соответственных клаймов, как мне это сделать? Как вообще объект ClaimIdentity учитываются внутри объекта ClaimPrincipal?
  • Вопрос задан
  • 24 просмотра
Решения вопроса 1
NikFaraday
@NikFaraday Автор вопроса
Student full-stack Developer
Разобрался

При создании объект ClaimPrincipal, который принимает коллекцию объектов ClaimIdentity, все клаймы будут доступны в HttpContext. Когда вам нужно получить текущего пользователя и его клаймы используя HttpContext(Accessor), свойство User.Claims имеет все клаймы из всех объектов ClaimIdentity, который были использованы во время авторизации, по этому необязательно париться по поводу того, какой из объектов Identity вытянуть, а можно сделать выборку из всех клаймов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ну так а мы откуда знаем, какие claims вам нужны? Всё зависит от вашей модели безопасности в приложении - каким образом вы авторизуете ваших пользователей (или что там у вас) на соответствующие действия.

Например в простом случае, если у вас модель, основанная на ролях, то вам вероятно хватит клэима "роль", для которого даже helper-метод сделан: IsInRole.

Сейчас вы задали вопрос в духе "у меня есть запись в базе данных, какие поля мне из неё нужно взять?". ClaimsPrincipal в общем-то похож на такую "запись в базе" - набор фактов о каком-то принципале (например, о пользователе), с бонусом в виде того, что мы тем или иным способом убедились в подлинности этих фактов, а сами факты более-менее стандартизированы для многих практических задач.
Ответ написан
Ваш ответ на вопрос

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

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