0

Я пытаюсь обернуть голову вокруг Identity Asp.Net. Но, к сожалению, доступная документация не очень ясна или я чувствую, что это просто над моей головой :(Когда идентификатор Asp.Net создается и назначается пользователю?

Однако последуйте за пониманием высокого уровня, основанным на исследовании и чтении всего дня. Когда пользователь входит в систему, коллекция Если вы заявляете, что их возраст составляет 30 лет, вы можете разрешить им просматривать только контент для взрослых, но если они утверждают, что они являются 17, вы отказываетесь от доступа ему/ей :). Кроме того, роли для пользователей, такие как «Администратор», «Суперпользователи» ... могут использоваться для включения/отключения доступа. Если пользователи с ролью «Администратор», вы можете позволить им получить доступ к методу действия X.

Однако есть много вещей, которые меня путают и не позволяют мне четко обвести вокруг себя голову.

Сценарий

Предположим, я хочу создать новое приложение с одним контроллером. Этот контроллер имеет два метода действий: Add и Edit. Я предполагаю, что мне потребуется две претензии для каждого пользователя

new Claim { 
    UserId = 10, 
    ClaimType = "Can Add", 
    ClaimValue = null 
}, 

new Claim { 
    UserId = 10, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

new Claim { 
    UserId = 5, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

В этом случае пользователь с Id = 10 «можно добавить» и «Может редактировать», но пользователь с UserId = 5 «Можно добавить» по-не может редактировать.

Когда эти претензии создаются и назначаются пользователю? Я создаю эти претензии по мере необходимости, вручную вставляя их в таблицу AspNetUserClaims? Я назначаю их пользователям из своего профиля?

Что делать, если мне нужно добавить новую заявку в будущем, dI Мне нужно вручную назначить эту новую заявку всем пользователям вручную? или есть способ присвоить эти претензии роли по умолчанию, где пользователи могут наследовать?

Это не может быть большой вопрос, но ответ на этот вопрос поможет мне лучше понять Идентичность.

ответ

1

Претензии должны быть установлены при входе пользователя в систему. Вы не должны устанавливать его непосредственно в базе данных. См. this post, чтобы понять, когда устанавливать претензии.

Претензия - это информация о пользователе. Затем вы можете использовать эту информацию для авторизации (или чего-либо еще).

Обратите внимание, что вы всегда должны устанавливать значение для своего Claims, иначе вы можете столкнуться с непобедимой претензией.

+0

Я теперь более смущен. Являются ли претензии временными и доступны только для одной сессии или они являются постоянными? Является ли моллюска местом для получения информации о пользователе, например, его именем, электронной почтой, телефоном .... или местом, где я могу знать, что они могут сделать/получить доступ, например, могут выполнять операцию X или и то, и другое? По какой-то причине я начал думать, что пакет авторизации может не поддерживать авторизацию базы разрешений из коробки. Это что-то мне нужно реализовать и как-то взять разрешения и вставить их в один пользовательский запрос? – Jaylen

+0

Авторизация не основана на претензиях (вы можете создать атрибут ClaimAuthorizationAttribute, если хотите, но по умолчанию это не входит в структуру). Если вы хотите постоянно хранить имя пользователя, адрес электронной почты или телефон, поместите его в пользователя. Храните данные у пользователя. Если вам нужны расчетные поля или просто информация повсюду, используйте претензии. Имейте в виду, что претензии принадлежат Identity, а не Пользователю. –

+0

Я вижу. Спасибо Вам за информацию. Пара последний вопрос, а затем временные требования, если да, когда они удаляются из базы данных?Кроме того, авторизация на основе роли - единственная возможность авторизации, доступная из коробки? И для чего используется Authorize (Policy = «something»)? Еще раз большое спасибо за информацию, которую вы предоставили до сих пор, она помогает многим разобраться во всей идее. – Jaylen