Я некоторое время использую PrincipalPermission в службах wcf. [PrincipalPermission (SecurityAction.Demand, Role = SecurityRoles.CanManageUsers)]мелкозернистые разрешения; PrincipalPermission - роли отдельно от разрешений;
Наши роли имеют префикс: Can * и как мы достигаем управления мелкозернистыми действиями со встроенной системой членства asp.net.
Это затрудняет понимание бизнес-единицы, какие мелкие роли мы можем предоставить пользователю.
Вот мой новый подход и хотел бы посмотреть, сможет ли кто-нибудь обеспечить обратную связь, обзор кода, прежде чем я воплощу свое предложение.
1) aspnet_roles - бизнес-единица роль
2) Расширить систему членства asp.net путем создания таблицы разрешений и Role_Permission таблицы и User_Permission таблицу (многие ко многим)
3) создавать пользовательские CodeAccessSecurityAttribute + который смотрит на новые таблицы [CustomPermissionCheck (Security.Demand, HasPermission = "can *")] первая итерация я статически новый зависимый репозиторий. В идеале я хотел бы использовать атрибут стиля aop, в который встроен репозиторий IPermissionRepository.HasPermission (...);
Если я подхожу к новому способу, я, вероятно, перестану наследовать от CodeAccessSecurityAttribute - что могут сказать об этом ребята из безопасности?
Кто-нибудь еще решил это, есть ли что-то в рамках, которое я пропустил?