Внедрение детальных разрешений времени выполнения в asp.net Membership?

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

Членство в ASP.net, похоже, не поддерживает это. Я подумал о создании постоянных невидимых подролей, чтобы был набор скрытых ролей типа "_CanEditContent" и "_CanDeleteOthersContent". Проверка будет [Authorize(Roles = SubRoles.CanEditUser)], которая проверит, что пользователь находится в роли, имеющей роль _CanEditUser. Проблема заключается в том, как назначать роли другим ролям, чтобы при создании новой роли, такой как «UserAdmin», как мы могли бы назначить роль «_CanEditUser» этой новой роли? Это кажется невозможным.

Что мне нужно сделать, так это иметь возможность создавать роли во время выполнения и добавлять настраиваемые разрешения для новых или существующих ролей. Я бы выполнял проверки с помощью чего-то вроде [Authorize] и настраиваемых проверок для методов AJAX. Как бы я этого добился?


person Joel Peltonen    schedule 09.08.2012    source источник


Ответы (1)


Действительно, членство в asp.net не поддерживает это. Вам придется развернуть свой собственный механизм с собственными атрибутами авторизации, который будет использовать информацию о разрешениях пользователя (или роли).

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

person Serg Rogovtsev    schedule 09.08.2012
comment
Спасибо за ответ. Я накрутил свои собственные разрешения, которые работали достаточно хорошо (на данный момент, пока я не столкнулся с кирпичной стеной, не придумав что-то до того, как мне это нужно). - person Joel Peltonen; 16.08.2012