пятница, 7 ноября 2008 г.

Регистрация и авторизация в ASP.Net

Задумал я тут сделать простенький сайт на ASP.Net
С языком разобраться не составило проблем. А вот с функциональной частью я намучался. Оказалось, что лучше всего использовать для регистрации и авторизации - базу данных MSSQL 2005. А вот как подключиться - я не знал.
Какието SQL Connection, какие-то Query. Что за ConnectionString?

Вот здесь я и расскажу что это такое и как можно подключаться к БД MSSQL не только с сайта, но и с обычных WPF или WinForms программ.

Начнем с того, что нам нужно подключиться к БД. Для этого вам нужно установить MS SQL 2005. (Сейчас уже появился MS SQL 2008) Потом вы создаете таблицу, скажем users. В таблице будет 2 поля: логин и пароль. Это просто.
Теперь нужно подключиться к этой БД из нашей программы или сайта.
Для этого мы пишем простой обработчик события. Ниже приведен код простейшей регистрации пользователя на сайте:

protected void RegBut_Click(object sender, EventArgs e)
        {
            System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=LH-38QGJLY27BK5;Initial Catalog=NG;Integrated Security=True");
            sqlConn.Open();

            System.Data.SqlClient.SqlCommand sqlCmd = new System.Data.SqlClient.SqlCommand("INSERT INTO users values('"+LogBox.Text+"','"+PassBox.Text+"')", sqlConn);
            sqlCmd.ExecuteNonQuery();

            sqlConn.Close();

            Server.Transfer("index.aspx",true);
        }

В первой строчке мы соединяемся с БД NG, находящейся на MSSQL-сервере LH-38QGJLY27BK5 (это имя моего компьютера, но если база находится на удаленном хосте, то здесь надо указывать его адрес).
Потом открываем подключение. И создаем запрос на языке SQL. В данном случае - записи логина и пароля в таблицу users. Выполняем этот запрос и закрываем соединение. После чего редирект на index.aspx. Т.е. после регистрации вы будете автоматически перенаправлены на главную страницу.

Авторизация делается схожим образом. Также коннектимся к БД. Только вместо команды INSERT, будет команда SELECT:

protected void EnterBut_Click(object sender, EventArgs e)
        {
            System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection("Data Source=LH-38QGJLY27BK5;Initial Catalog=NG;Integrated Security=True");
            sqlConn.Open();
            System.Data.SqlClient.SqlCommand sqlCmd = new System.Data.SqlClient.SqlCommand("SELECT * FROM users", sqlConn);
            System.Data.SqlClient.SqlDataReader sqlRead = sqlCmd.ExecuteReader();

            while (sqlRead.Read())
            {
                if (LogBox.Text == sqlRead[1].ToString() && PasBox.Text == sqlRead[2].ToString())
                {
                    AuthoTable.Visible = false;
                    LoginInfoLabel.Text = " Авторизация прошла успешно";
                    //Здесь поднимаем флажок для привилегий
                }
                else
                {
                    LoginInfoLabel.Text = "Неверный логин и(или) пароль";
                }
            }
            sqlRead.Close();

        }

Комментариев нет: