2010-05-10 5 views
1

В настоящее время мы пересоздаем совершенно новую модель безопасности, которая затмевает наш существующий процесс. Сейчас мы планируем захватить роли пользователя во время процесса входа в систему, а затем с помощью класса Base Page, чтобы проверить, имеет ли пользователь роль соответствующей страницы, на которую пользователь перемещается.Роли ASP.Net: вопрос безопасности на уровне страницы

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

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

ответ

1

Вы используете встроенное членство?

Если это так, вы можете использовать раздел location вашего файла web.config, чтобы ограничить доступ к отдельным страницам или целым каталогам. От MSDN:

Следующий пример позволяет анонимного пользователя, чтобы получить доступ к странице Logon.aspx:

<configuration> 
    <location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

Проблема в том, что это зависит от каждого пользователя. Есть примерно 10 000 пользователей, и каждый может иметь или не иметь совершенно другой набор правил. Добавление всех этих различий в web.config кажется довольно большой и продолжительной задачей. – jlrolin

+0

@jlrolin - вы можете использовать ' или похожие –

2

Вы уже изучали членство в ASP.Net? Он позаботится обо всех сценариях, которые вы указали выше (обрезка меню, безопасность страницы) и очень простым способом.

См. Дополнительную информацию о членстве - http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx.

+0

Я полагаю качение нашего собственного поставщика роли и вызов функции User.IsInRole из роли на странице было бы достаточно, если бы я ссылался на сессионный Arraylist of Roles, который у пользователя есть. В основном это будет то же самое, что вызвать функцию класса Base. – jlrolin

+0

Если вы должны использовать членство RoleProvider вместе с разделом «Местоположение/авторизация» вашей веб-конфигурации, чтобы указать, какие роли могут видеть страницы, вам не нужно будет ссылаться на список ролей со страницы. –

Смежные вопросы