Ищем управляемую данными инфраструктуру безопасности для.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))
{
...
}