Запретить посетителям открывать определенные страницы

StackOverflow https://stackoverflow.com/questions/642932

Вопрос

У меня есть веб-сайт as ASP.Net 2.0 с SQL Server в качестве базы данных и C # 2005 в качестве языка программирования.Веб-сайт почти завершен, и все ссылки работают нормально.Но я хочу запретить обычным пользователям открывать пару страниц.Когда любой пользователь нажимает на эти конкретные ссылки, открывается другая страница, которая содержит элемент управления входом в ASP.Пользователь должен указать действительный идентификатор пользователя и пароль для отображения ссылок, указывающих на страницы с ограничениями доступа.Но, будучи новичком, я не знаю, как использовать всю мощь ASP Login control.Потому что, если пользователь узнает точный URL запрещенных страниц, то он / она может обойти контроль входа в систему и напрямую получить доступ к этим страницам, введя URL в адресную строку.Я хочу предотвратить это.Если пользователь вводит URL-адрес непосредственно в адресной строке, я хочу, чтобы сама страница проверяла, прошел ли пользователь проверку с помощью элемента управления входом, и либо отображала страницу, либо указывала пользователю на страницу входа.

Как мне реализовать эту функцию??

Спасибо.

Лалит Кумар Барик

Это было полезно?

Решение

Вы должны проверять состояние пользователя, вошедшего в систему, при каждом событии Page_Load () на страницах, которые должны контролировать разрешения, или просто помещать код аутентификации в файл CS, который будет включен во все остальные файлы.

В зависимости от выбранной вами архитектуры аутентификации (просто используйте переменную сеанса или создайте идентификатор сеанса с файлами cookie), вы должны соответствующим образом адаптировать свой код.

Самый простой способ - управлять входами в систему через объект сеанса. Когда пользователь входит в систему с правильными учетными данными, вы можете установить Session [" logged_in "] = true . И для каждого события Page_Load () страниц, которые вы хотите защитить, вам необходимо выполнить следующую проверку.

Добавьте этот код в начале вашей функции Page_Load ():

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

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

Другие советы

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

В этом разделе вы можете определить вплоть до уровня страницы права доступа, поэтому не имеет значения, если бы пользователи знали URL защищенных страниц, ASP.NET не позволил бы им войти.

Итак, вы бы добавили что-то вроде:

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

" Запретить пользователей = "? " " бит говорит "Запретить всем анонимным пользователям".

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

Дополнительную информацию о разделе авторизации можно найти здесь:

  

Элемент авторизации

Это плата за услуги по членству ASP.Net.Взгляните на эта статья а также великая серия в "4 парнях из Роллы".

Членство позволяет вам хранить информацию о пользователе / пароле, которая используется, среди прочего, элементом управления входом в систему.В сочетании с настройкой авторизации вы сможете напрямую сузить доступ к определенным страницам для конкретных пользователей или ролей.

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

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Я бы сделал таблицу ролей для пользователей. Каждый, кто входит в систему, получает «нормальную» роль. Специальные пользователи, которых вы назначаете своими учетными данными, получают назначенные роли для доступа к странице или разделу вашего сайта. Некоторые пользователи (как и вы) получают роль администратора, которая автоматически предоставляет им доступ ко всему.

Запустите функцию CheckIsInRoles («Admin», «Normal», «Wh whatRoleYouChoose»), которая возвращает логическое значение. Если это правда, загрузите страницу; если нет, не надо.

Даже лучше не отображать ссылку, если не в правильной роли.

Это дает дополнительное преимущество: каждый пользователь входит в систему один раз, а затем получает доступ ко всем нужным страницам без необходимости каждый раз входить в систему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top