Ограничить доступ к некоторым страницам .aspx - PullRequest
2 голосов
/ 09 мая 2011

У меня есть несколько страниц .aspx в моем веб-приложении asp.net, которые могут видеть только администраторы, и некоторые страницы .aspx, которые могут видеть все пользователи.Как я могу ограничить обычным пользователям доступ к страницам, предназначенным для администратора?

Более того, я не использую авторизацию на asp.net. Я хочу сказать, что я использую аутентификацию самостоятельно, используя сеансы ипомечать переменныеКак я могу ограничить содержание для пользователей в зависимости от привилегий в этом сценарии?

Ответы [ 4 ]

8 голосов
/ 09 мая 2011

Поместите эти страницы в собственный каталог и используйте web.config в этом каталоге, чтобы ограничить доступ к ним.

<configuration>
   <system.web>
      <authorization>
         <allow roles="Admins"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</configuration>

Не изобретайте колесо!

2 голосов
/ 09 мая 2011

Я бы, вероятно, создал бы пользовательскую функцию, конечно публичный метод, который содержит всю логику, основанную на ролях [как вы уже упоминали, что вы не хотите использовать функцию членства asp.net], чтобы позволить отрицать пользователь для доступа к страницам. Этот метод проверяет приемлемость пользователя для страницы, для лучшей логики вы можете сохранить ключ для всех страниц в web.Config.

Вы можете создать ключ в

   <appsetting>


 <add key="Page1" value="ViewOrders.aspx"/>
<add key="Page2" value="DeleteOrders.aspx"/>

Теперь в методе можно создать цикл for / foreach для итерации значения ключа для имени страницы. Я сказал это, потому что вам будет легче добавлять страницы позже и назначать им соответствующие роли.

Редактировать

Возможно, вы хотели бы увидеть это http://mywsat.codeplex.com/

1 голос
/ 09 мая 2011

Если вы используете свой собственный, вы можете захотеть создать собственного поставщика ролей и заставить его возвращать роли для пользователя из сеанса, который затем сможет преодолеть оба пробела ...

НТН.

0 голосов
/ 06 июня 2018

Знайте, что это немного устарело, но на тот случай, если кто-то другой использует членство. Используйте это в вашем web.config:

<configuration>
  <!-- Only administrators may access AdminTools.aspx -->
  <location path="AdminTools.aspx">
    <system.web>
      <authorization>
        <allow roles="Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

ссылка: создание собственного веб-сайта ASP.NET 2.0 с использованием C # VB, второе издание Кристиан Дайр, Зак Рувалькаба

...