Самый простой способ авторизации на ASP.NET сайте

Основной способ авторизации на ASP.NET сайте предполагает использование MembershipProvider. О том, как настроить такую авторизацию информации достаточно много. Но для небольших сайтов имеет смысл использовать упрощенный подход к созданию системы авторизации, который я и хочу описать ниже.

Этот подход позволяет наилучшим образом защитить какую либо часть сайта в случае, когда доступ должен быть разрешен одному-двум пользователям или администраторам (это главное условие). Хранение данных сайта производится либо при помощи обычных текстовых файлов, либо XML файлов, либо при помощи базы данных в которой по каким то причинам хранить пароли нежелательно или нецелесообразно (требуется отдельный Membership Provider для этой базы).

Не все разработчики знают, что в файле конфигурации asp.net приложения (web.config) в разделе <authentication> можно указать не только метод проверки пароля (Windows, Forms) но собственно учетные данные для доступа к сайту. Выглядит это таким образом:

  1: <authentication mode="Forms">
  2:     <forms loginUrl="Login.aspx">
  3:         <credentials passwordFormat="Clear">
  4:             <user name="user1" password="pass1"/>
  5:             <user name="user2" password="pass2"/>
  6:         </credentials>
  7:     </forms>
  8: </authentication>

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

  1: <system.web>
  2: ...
  3: </system.web>
  4:
  5: <location path="admin">
  6:     <system.web>
  7:         <authorization>
  8:             <deny users="?"/>
  9:             <allow users="*"/>
 10:         </authorization>
 11:     </system.web>
 12: </location>
 13:

В корень сайта ложим страницу входа Login.aspx c элементом управления asp:Login

  1: <asp:Login ID="Login1" runat="server" onauthenticate="Login1_Authenticate"/>

И добавляем обработчик события onautenticate

  1: protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
  2: {
  3:     e.Authenticated = FormsAuthentication.Authenticate(Login1.UserName, Login1.Password);
  4: }

Все, доступ к административной части сайта закрыт 🙂

В моем примере пароли хранятся открытым текстом, параметр passwordFormat имеет значение Clear. Однако можно указать, что должны использоваться шифрованные пароли. Для этого соответствующий параметр нужно установить в значение “MD5” или “SHA1” и указать зашифрованное значение в качестве пароля.

Чтобы получить это значение можно вызвать вот такой метод (например в консольном приложении): FormsAuthentication.HashPasswordForStoringInConfigFile(«pass1», «SHA1»);

Полученное значение можно использовать в web.config

UPD: Спасибо за ссылку, представленную в комментариях: Разница между аутентификацией, идентификацией и авторизацией

Самый простой способ авторизации на ASP.NET сайте: 5 комментариев

  1. dv

    А что не так? Вот цитата с сайта по вашей ссылке:
    "Авторизация — это механизм в системе, которая говорит куда идентифицированный пользователь может зайти, а куда у него не будет прав".
    Я же как раз решаю задачу организации разграничения доступа к разделам сайта. Для этого используется и аутентификация и авторизация …
    Тем не менее, за ссылку большое спасибо. Все кратко и доступно. Я рекомендую всем к просмотру (скопировал в текст статьи)!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *