Объединение организационной единицы и бизнес-ролей в веб-приложении ASP.NET - PullRequest
1 голос
/ 20 июля 2010

В реальных корпоративных веб-приложениях для предприятий мы всегда должны ограничивать доступ к данным по единице и роли пользователя.

Учтите, что у нас есть корпоративная компания со множеством магазинов в стране.
Таким образом, у компании есть головной офис, который имеет доступ ко всем счетам и статистике для всех филиалов.Каждый регион в стране управляет и планирует региональные стратегии продаж для своих филиалов.Затем пользователь региона также может видеть все счета, созданные его ветвями.Каждый филиал может создавать счет-фактуру, клиент и просматривать только свои данные.

Мы можем видеть, что у нас есть два основных определения контроля доступа:

1- Роли (которые были задуманы и реализованы много лет назад!): Мы можем легко реализовать, используя RoleProvider иуправление контролем доступа на уровне пользовательского интерфейса (web.config и sitemap.config)

2- Единицы и их связь с ролями для отказа / предоставления пользователю доступа к обновлению / просмотру данных.

Iреализовали пользовательский принципал в ASP.NET, чтобы получить юнит и роли пользователя, но я думаю, что должно быть классическое решение ...

1 Ответ

0 голосов
/ 20 апреля 2012

Проверьте это:

http://netsqlazman.codeplex.com/discussions/352107

http://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/

Вот мое объяснение.

http://granadacoder.wordpress.com/2010/12/01/rant-hard-coded-security-roles/

............

MembershipProvider основан на ROLES, .... и это для футбольного клуба вашего ребенка ... НЕ профессиональное приложение DotNet.

Существует обходной путь "среднего уровня".

http://www.lhotka.net/weblog/CommentView,guid,9efcafc7-68a2-4f8f-bc64-66174453adfd.aspx

в основном. Используйте MembershipProvider ...... но относитесь к слову / фразе "Роль" как "Право". (На ваш взгляд ... вы, конечно, не можете изменить названия объектов в коде MS)

КОРОБКА Рокки (от URL выше)

bool result = currentPrincipal.IsInRole (requiredPermission);

...