2012-02-21 2 views
3

Есть ли какие-либо ранее существовавшие решения, которые расширяют встроенный провайдер членства в SQL? & Поставщики ролей Sql в .NET с концепцией членства в группах ,Объединение ролей вместе и назначение пользователей группе (поставщик ролей ASP.NET)

Сейчас отношения Роли выглядит

Users ====> UserRoles <=====Roles 

Я хотел бы расширить, что выглядеть

Users ====> UserGroups <==== Groups ====> GroupRoles <==== Roles. 

Допустим, у вас есть приложение с 30 или 40 различных ролей в ней. Каждый раз, когда новый сотрудник присоединяется к компании, вы должны помнить, какой набор ролей, который обычно получает отдел &, затем убедитесь, что вы отметили эти 8 флажков при настройке своей учетной записи на сайте.

Если у вас была концепция группы, вы могли бы создать «Группу» для каждого отдела в качестве логической группировки ролей, которые обычно получают сотрудники отделов. Затем вы можете просто добавить новых сотрудников в одну группу.

Есть ли какие-либо из вариантов реализации для этого уже имеющиеся, которые могут спасти меня, написав мои собственные?

+0

Я предполагаю, что ваша желаемая модель в основном похожа на [мой здесь] (http://stackoverflow.com/questions/5518746/how-to-join-with-linq-to-typed-dataset), не так ли? Моя «Роль» - это просто пользовательская группа, поскольку авторизация контролируется «AccessRule». –

+0

Действительно. Вы пришли к этому немного по-другому, я хотел добавить «группу» между пользователями и ролями ... вы сделали группы ролей == и добавили AccessRules за пределы, но концепция выглядит принципиально одинаковой. Единственная причина, по которой я хотел сделать это по-другому, заключалась в том, чтобы иметь возможность использовать встроенные методы-поставщики, такие как 'IsInRole()' и т. Д. –

+0

. Мой подход имеет то преимущество, что вам не нужно реализовывать пользовательский ' RoleProvider' вообще, поскольку он сохраняет его, по-видимому, нетронутым. ASP.NET не нужно знать, что я улучшил его на другом конце. Я также внедрил функцию-шаблон, которая позволяет создавать новые роли с помощью другой роли в качестве шаблона. Это список «AccessRules» другой «Роли» (или вашей роли по умолчанию). Мне не нужно использовать 'IsInRole' для проверки авторизации. Я реализовал свой собственный метод hasAccess, который проверяет, принадлежит ли пользователю роль, которая имеет данный «AccessRule» (f.e. DeleteXY). –

ответ

3

Я предполагаю, что ваша желаемая модель в основном похожа на mine here, не так ли? Моя роль - это просто User-Group, если авторизация контролируется AccessRule.

enter image description here

Мой подход имеет то преимущество, что вам не нужно, чтобы реализовать пользовательские RoleProvider на всех, так как он держит его, по-видимому нетронутым. ASP.NET не нужно знать, что я улучшил его на другом конце. Я также внедрил функцию-шаблон, которая позволяет создавать новые роли с помощью другой роли в качестве шаблона. Это список AccessRules другого Role (или вашей роли по умолчанию). Для проверки авторизации мне не нужно использовать IsInRole. Я применил свой собственный метод hasAccess, который проверяет, принадлежит ли пользователю роль, которая имеет заданный AccessRule (f.e. DeleteXY).