вторник, 24 марта 2009 г.

Создание страницы Login.aspx

1. Добавьте в проект страницу Login.aspx.
2. На страницу поместите компонент Login из раздела компонентов Login. Через свойства компонента поменяйте надписи на русский язык. Для изменения внешнего вида компонента воспользуйтесь командой Auto Format.
3. В обработчик события Authenticate компонента Login поместите следующий код:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString()); // создание подключения к базе данных. Название строки подключения можно посмотреть в файле web.config в разделе
SqlCommand comm = new SqlCommand(); // создание команды
comm.CommandText = String.Format("SELECT ID FROM users WHERE nick='{0}' and Password='{1}'", Login1.UserName, Login1.Password); // указываем текст команды
comm.CommandType = CommandType.Text; // указываем тип команды
comm.Connection = conn; // указываем подключение для команды
conn.Open(); // открываем подключение к базе данных
SqlDataReader reader = comm.ExecuteReader(); // выполнение команды
if (reader.Read()) // если результат запроса непустой
{
int UserID = (int)reader["ID"]; // считываем идентификатор пользователя
e.Authenticated = true; // устанавливаем признак того, что пользователь прошел аутентификацию
Session["UserID"] = UserID; // запоминаем идентификатор пользователя
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet); // переход на следующую страницу
}
else e.Authenticated = false; // иначе пользователь в базе данных не зарегистрирован
Добавьте пространство имен using System.Data.SqlClient, чтобы иметь возможность использовать классы SqlConnection и SqlCommand.
4. Скомпилируйте и запустите проект.
5. Чтобы при входе на сайт автоматически осуществлялся переход на страницу Login.aspx, необходимо настроить аутентификацию пользователей на основе форм. Для этого откройте файл web.config. Найдите раздел , он должен выглядеть примерно следующим образом:

После раздела аутентификации добавьте раздел авторизации:

Это позволит запретить доступ ко всем страницам сайта для всех пользователей, не прошедших аутентификацию.

6. Добавьте в таблицу Users одного пользователя. Протестируйте работу страницы Login.aspx.


Добавление новых пользователей через сайт

7. Добавьте на страницу Login.aspx компоненты LinkButton (ID = lbtRegister), Panel, Label (ID = lbSuccessMessage) и Label (ID = lbErrorMessage). На Panel добавьте таблицу с тремя столбцами и шестью строками.
8. Добавьте компоненты в 5 строк первого столбца:
a. Label (Text = ФИО)
b. Label (Text = Дата рождения)
c. Label (Text = Ник)
d. Label (Text = Пароль)
e. Label (Text = Подтверждение)
9. Добавьте компоненты во второй столбец:
a. TextBox (ID = tbFIO)
b. TextBox (ID = tbDOB)
c. TextBox (ID = tbNick)
d. TextBox (ID = tbPassword)
e. TextBox (ID = tbConfirmPassword)
f. Button (ID = btCreateUser)
10. Добавьте компоненты из раздела Validation в третий столбец:
a. RequiredFieldValidator (ID = rfvFIO)
b. RequiredFieldValidator (ID = rfvDOB), RegularExpressionValidator (ID = revDOB)
c. RequiredFieldValidator (ID = rfvNick)
d. RequiredFieldValidator (ID = rfvPassword)
e. CompareValidator (ID = tbConfirmPassword)
11. Установите следующие значения свойств:

Компонент Свойство Значение
lbtRegister Text Добавить нового пользователя
lbSuccessMessage Text Пользователь добавлен
Visible false
lbErrorMessage Text Пользователь с таким ником уже существует
Visible false
Panel Visible false
tbFIO Width 100%
tbDOB Width 100%
tbNick Width 100%
tbPassword Width 100%
tbConfirmPassword Width 100%
btCreateUser Text Создать пользователя
rfvFIO ErrorMessage *
ControlToValidate tbFIO
rfvDOB ErrorMessage *
ControlToValidate tbDOB
revDOB ErrorMessage дд.мм.гггг
ControlToValidate tbDOB
ValidationExpression \d{2}\.\d{2}\.\d{4}
rfvNick ErrorMessage *
ControlToValidate tbNick
rfvPassword ErrorMessage *
ControlToValidate tbPassword
tbConfirmPassword ErrorMessage Пароли должны совпадать
ControlToValidate tbPassword
ControlToCompare tbConfirmPassword


Примерный вид страницы Login.aspx

12. В обработчик Click компонента lbtRegister добавьте код:

Panel1.Visible = true;
lbErrorMessage.Visible = false;
lbSuccessMessage.Visible = false;

13. В обработчик Click компонента btCreateUser добавьте код:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString());
SqlCommand comm = new SqlCommand();
comm.CommandText = "CreateUserSP";
comm.CommandType = CommandType.StoredProcedure;
comm.Connection = conn;
// передача параметров в хранимую процедуру
comm.Parameters.AddWithValue("@fio", tbFIO.Text);
comm.Parameters.AddWithValue("@dob", DateTime.Parse(tbDOB.Text));
comm.Parameters.AddWithValue("@nick", tbNick.Text);
comm.Parameters.AddWithValue("@password", tbPassword.Text);
conn.Open();
// выполнение команды, чтение кода ошибки
int err = (int)comm.ExecuteScalar();
// закрытие подключения к базе данных
conn.Close();
// скрываем панель
Panel1.Visible = false;
// отображение сообщения
if (err == 0)lbSuccessMessage.Visible = true;
else lbErrorMessage.Visible = true;


14. Так как добавление нового пользователя предполагает использование хранимой процедуры CreateUserSP, то необходимо ее создать в базе данных:

CREATE PROCEDURE [dbo].[CreateUserSP]
-- параметры передаваемые в процедуру
@fio nvarchar(50),
@dob datetime,
@nick nvarchar(50),
@password nvarchar(50)
AS
BEGIN
declare @err int -- объявление переменной
set @err = 0 -- присвоение значение, 0 - ошибок нет
-- проверка на наличие пользователя с указанным ником
if exists(select * from users where nick = @nick)
set @err = 1
else -- добавление пользователя
insert users (fio,dob,nick,password)
values (@fio, @dob, @nick, @password)
-- возращение кода ошибки
select @err
END

15. Скомпилируйте и запустите проект. Протестируйте работу страницы Login.aspx.
16. Самостоятельно измените страницу Login.aspx так, чтобы запретить создание пользователя с уже существующим значением поля ФИО.

Ваша крепость в неспокойном мире: недвижимость Болгарии в новостройках. Богатая история Болгарии и шикарные пейзажи

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

Знаменитая ММОРПГ ИВА - построить свою империю в космосе гораздо легче, чем вы думаете!