Авторизация на основе данных в ASP.NET

Резюме : Мне нужно авторизовать страницы на основе данных, представленных в строке запроса URL, а не только имени страницы.


Предпосылки:

Допустим, я ' м создание системы библиотечного инвентаря. Пользователи могут быть созданы и назначены одной библиотеке в роли администратора или пользователя. В одной базе данных находятся сотни конкурирующих библиотек, поэтому важно убедиться, что пользователи одной библиотеки не могут просматривать инвентарь из другой библиотеки .

Сейчас я использую довольно стандартную установку ASP.NET : Формы аутентификации с использованием SqlMembershipProvider. Авторизация с использованием SqlRoleProvider, настроенная через разделы в файле web.config. Обрезка безопасности с помощью провайдера SiteMap для скрытия неавторизованных страниц.

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

Вопрос:

Теперь у пользователей есть возможность создавать произвольные «коллекции» в библиотеке. (например, в коллекции A есть книги 1, 2 и 3.) Администраторы хотят иметь возможность предоставлять доступ администратора / пользователя к отдельным коллекциям, а не только ко всей библиотеке.

Итак, если пользователь переходит на www. .com / Book.aspx? BookId = 1 , системе необходимо убедиться, что у пользователя есть разрешения для коллекции, в которой находится «Книга 1», перед отображением страницы. Если они перейдут на www.com/Reviews.aspx?ReviewId=23, мне нужно убедиться, что обзор относится к книге, которая находится в коллекции, на просмотр которой у них есть разрешение.

1) Как я могу реализовать это в самый стандартный способ ASP.NET?
Ручная проверка на базовой странице?
Пользовательский HttpModule?
Пользовательский поставщик ролей?
Меня не интересует, как хранить разрешения администратора / пользователя, а скорее как / где авторизоваться на основе этих разрешений. (примеры того, как реализовать любой из них, приветствуются)

2) Чтобы еще больше усложнить ситуацию, я все же хотел бы обрезать безопасность, чтобы проверить, есть ли у пользователя права администратора в какой-либо коллекции или библиотеке, и скрыть страницы администратора если он этого не сделает.

7
задан Greg 31 August 2010 в 14:00
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: