Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Разработка Web-приложений ASP.NET 2.0 в Visual Studio.NET 2005
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

Лабораторная работа 16.1 Защита приложения ASP.NET средствами Forms Authentification

Разграничение доступа в приложениях ASP.NET 2.0 средствами Forms Authentification, хранение информации о пользователях в базе данных

Подготовка:

Создайте в корневом каталоге диска C: базу данных Microsoft Access C:\auth.mdb с единственной таблицей AppUser. В этой таблице должно быть два поля:

·        Login - текстовое с максимальным размером 50;

·        Password - текстовое с максимальным размером 50.

Внесите в эту таблицу несколько записей, например, Login - User1 с паролем 123.

Задание:

1. Создайте приложение ASP.NET на основе шаблона ASP.NET Web Site в каталоге C:\Labs\FormsAuth. В этом приложении поместите на Web-форму Default.aspx единственный элемент управления Label со значением свойства Text "Top Secret". Эта форма должна выглядеть так, как представлено на рис. 16-1а.

2. Защитите это приложение средствами Forms Authentification. Страница для ввода имени пользователя и пароля должна выглядеть так, как представлено на рис. 16-2а. В том случае, если пользователь не прошел аутентификацию, при его обращении к любой странице приложения должна открываться страница для ввода имени пользователя и пароля. Введенные пользователем значения должны проверяться по базе данных auth.mdb. Если введены правильные значения, то пользователь должен попадать на запрошенную страницу, если нет - то должно выводиться сообщение "Неверное имя пользователя или пароль".

Рис. 16-1а

Рис. 16-1б

Решение:

К пункту 1 - создание обычного Web-приложения:

1. Создайте в Visual Studio.NET 2005 новый проект на основе шаблона ASP.NET Web Site. При создании в поле Location введите C:\Labs\FormsAuth. После создания приложения форма Default.aspx откроется в окне дизайнера автоматически.

2. Поместите на форму элемент управления Label. Значение свойства Text для этого элемента управления должно быть Top Secret.

3. Нажмите на кнопку F5, чтобы убедиться, что приложение работает нормально.

К пункту 2 - защита приложения средствами Forms Authentification.

1. В окне Solution Explorer щелкните правой кнопкой мыши по файлу Web.config и в контекстном меню выберите Open. Файл Web.config будет открыт в окне редактора Visual Studio.

2. В файле Web.config найдите тег <Authentification>, закомментируйте код <authentication mode="Windows" />и добавьте необходимый код для Forms Authentification. В итоге код для этого тега может быть таким:

    <!--authentication mode="Windows" /-->

<authentication mode="Forms">

    <forms name=".AuthCookie"

           loginUrl="Login.aspx"

           protection="All"

           timeout="30"

           path="/">

    </forms>

  </authentication>

3. В файле Web.config после введенного вами тега </authentication> введите код для авторизации. В итоге код этого тега может выглядеть так:

<authorization>

    <deny users="?" /> 

    <allow users="*" />

</authorization>

Сохраните изменения в файле Web.config.

4. В окне Solution Explorer щелкните правой кнопкой мыши по объекту вашего проекта FormsAuth и в контекстном меню выберите Add New Item, а затем в открывшемся списке — Web Form. Переименуйте созданную Web-форму Default2.aspx в Login.aspx.

5. Откройте форму Login.aspx в окне дизайнера и поместите на нее следующие элементы управления:

·        элемент управления TextBox. Значение свойства (ID) для него должно быть txtLoginId;

·        рядом с ним - элемент управления Label. Значение свойства Text для него должно быть "Введите имя пользователя:"

·        еще один элемент управления TextBox. Значение свойства ID для него должно быть txtPassword, а значение свойства TextMode - Password.

·        рядом с ним - еще один элемент управления Label. Значение свойства Text для него должно быть "Введите пароль:"

·        под ними - элемент управления Button. Значение свойства (ID) для него должно быть btnLogin, а значение свойства Text - "Вход";

·        под кнопкой - еще один элемент управления Label. Значение свойства (ID) для него должно быть Label3, а значение свойства Text сделайте пустым.

6. Щелкните правой кнопкой мыши по строке Login.aspx в окне редактора кода и в контекстном меню выберите View Code. Откроется окно редактора кода с открытой страницей Login.aspx.vb.

7. В раздел General - Declaration (самая верхняя часть страницы) добавьте команды:

Imports Microsoft.VisualBasic

Imports System.Configuration

Imports System.Data

Imports System.Data.OleDb

Imports System.Web.Security

Imports System.Web.UI.HtmlControls

Imports System.Web.UI.WebControls

8. В левом верхнем углу окна редактора кода в списке объектов выберите btnLogin, а в списке событий справа - событие Click. Добавьте в событийную процедуру btnLogin_Click() следующий код:

        Dim dbConn As OleDbConnection

        Dim dCmd As OleDbCommand

        Dim dr As OleDbDataReader

        Dim strConnection As String

        Dim strSQL As String

            ' Подключаемся к базе данных

        strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\auth.mdb;Persist Security Info=False"

        dbConn = New OleDb.OleDbConnection(strConnection)

        dbConn.Open()

            'Создаем запрос и передаем необходимые параметры из текстовых полей

        strSQL = "SELECT Login FROM AppUser WHERE Login=? AND Password=?"

        dCmd = New OleDbCommand(strSQL, dbConn)

        dCmd.Parameters.Add(New OleDbParameter("Login", txtLoginId.Text))

        dCmd.Parameters.Add(New OleDbParameter("Password", txtPassword.Text))

            'Выполняем запрос

        dr = dCmd.ExecuteReader()

            'Проверяем результат

        If (dr.Read()) Then

            FormsAuthentication.SetAuthCookie(CStr(dr.Item("Login")), False)

            Response.Redirect("Default.aspx")

        Else

            Label3.Text = "Неверное имя пользователя или пароль!"

        End If

            'Разрываем соединение

        dr.Close()

        dbConn.Close()

9. Откройте в режиме Design исходную страницу Default.aspx, запустите приложение на выполнение при помощи кнопки F5 и убедитесь, что доступ к странице открывается только после ввода правильного имени пользователя и пароля.

 

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru