Ищем управляемую данными инфраструктуру безопасности для.net

Я занимаюсь разработкой системы CRM, которая должна иметь механизм безопасности на основе данных, а не механизм безопасности на основе ролей.

Например, определенный пользователь в системе может view все клиенты, update его собственные клиенты.

Таким образом, безопасность на основе ролей здесь не поможет, потому что все продавцы играют одинаковую роль: sales_user_role,

Мне нужно дифференцировать их, имея поле в каждой строке клиента: sales_owner_id

if(client.salesOwnerId.Equales(httpSession["user_id"]){
   delete...
   update...

}

в приведенном выше случае client Объект - это клиентская сущность, имеющая salesOwnerId.
Поскольку вышеприведенный код является спагетти-кодом, я хотел бы сделать это в рамках системы безопасности, управляемой данными.

Я работаю с C# .NET4, MVC3, WCF, Nhibernate и Spring для внедрения зависимостей.

(Я видел безопасность Rhino, которая делает это, но она не задокументирована и имеет очень мало учебных ресурсов)

Спасибо

1 ответ

Вы все еще можете достичь желаемого с помощью классической ролевой авторизации, такой как RoleProvider,

Например, вы можете иметь следующие роли:

ViewOwnClients
ViewAllClients
UpdateOwnClients
UpdateAllClients
DeleteOwnClients
DeleteAllClients

Вам все еще нужен код для проверки идентификатора владельца, например:

if ((User.IsInRole("UpdateAllClients") ||
    (User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId))
{
    ...
}
Другие вопросы по тегам