Если вы только когда-либо будете иметь типы пользователей, где это нормально для всех пользователей данного типа, имеющих одинаковые разрешения (а не, например, для того, чтобы разрешения могли отличаться пользователем для разных записей данных), тогда вы фактически делаете то же самое, как если бы вы использовали разрешения на основе ролей, а не основанные на требованиях.
Вопрос использования претензий заключается в том, что он позволяет делать все, что вы могли бы сделать через Роли и многое другое. Претензии дают вам большую гибкость: например, ваша база данных может содержать данные для нескольких разных клиентов (ClientA и ClientB), у каждого из которых может быть пользователь Admin (например, AdminUserA и AdminUserB), но у которых есть только права администратора на записи, относящиеся к конкретному клиенту, к которому они принадлежат.
В этой ситуации вы можете достичь этого, предоставив пользователю AdminUserA заявку типа ClientA со значением Admin и пользователем AdminUserB, претендуя на тип ClientB со значением Admin. Затем в коде вы разрешаете пользователям с требованием значение «Админ» для утверждения для администрирования записей для клиента с именем клиента.
См. Мой комментарий к How to add claims in ASP.NET Identity для двух разных способов добавления претензии к пользователю (к сожалению, Microsoft, похоже, не документировала это так, поэтому неясно, нужны ли оба метода!). Как уже упоминалось, вы можете добавить претензию к таблице AspNetClaims (но не к файлам cookie) через manager.AddClaim (идентификатор пользователя, требование) в GenerateUserIdentityAsync (менеджер UserManager) для класса ApplicationUser в IdentityModel.cs (в проекте MVC5).
Вы можете проверить, какие претензии у пользователя следующим образом: Когда пользователь входит в системе, userIdentity.Claims должен содержать все требования пользователя (в том числе пользовательских требований, которые были в AspNetClaims перед тем пользователь вошел в системе, но не любой добавленный с помощью manager.AddClaim!) и manager.GetClaims (userID) должен вернуть все пользовательские претензии пользователя (, включая, добавленных через manager.AddClaim!). Это беспорядочно, и Microsoft действительно должна убирать это или хотя бы документировать его лучше!
Надеется, что это помогает
В чем отличие ваших претензий к ролям? вы в значительной степени создаете роли, но сохраняете их в качестве претензий. Сделайте вашу жизнь проще и просто поиграйте с ролями. – trailmax
Обратите внимание, что MVC5 создает претензии для ролей. Таким образом, ваш запрос уже выполнен на самом деле. – Shoe