Аутентификация в ASP.NET - Forms-аутентификация
ОГЛАВЛЕНИЕ
Forms-аутентификация
При использовании Forms-аутентификации запрос параметров регистрации (например, логина и пароля) происходит в web-форме. Регистрационная страница указывается в файле Web.config. При первом обращении к защищаемым страницам ASP.NET перенаправляет пользователя на страницу для ввода пароля. При успешной регистрации аутентификационные данные сохраняются в виде cookie и при повторном обращении к защищенным страницам регистрация не требуется.Для того, чтобы использовать Forms-аутентификацию в файле Web.config в корневой папке приложения нужно указать страницу для ввода пароля:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
При попытке просмотра защищенной страницы ASP.NET проверяет, есть ли аутентификационных cookie в запросе. Если cookie нет, то запрос перенаправляется на страницу для регистрации, если есть - ASP.NET дешифрует cookie и извлекает из него регистрационную информацию.
На форме находятся поля для ввода логина и пароля и флажок для сохраняемой регистрации. При нажатии кнопки "Войти" происходит поиск пользователя с таким логином и паролем. Если такой пользователь найден, вызывается функция FormsAuthentication.RedirectFromLoginPage (), в которой указывается идентификатор пользователя и флаг для сохраняемой регистрации. Если же нет - выводится сообщение об ошибке.protected void btnLogin_Click(object sender, System.EventArgs e)
{
if (!IsValid) // проверяем правильность введенных данных
return;
OleDbConnection connection = GetDbConnection();
try
{
connection.Open();
OleDbCommand command = new OleDbCommand(string.Format("SELECT id FROM Customers WHERE login='{0}' AND password='{1}'", login, password), connection);
OleDbDataReader reader = command.ExecuteReader();
if (!reader.Read()) // пароль или логин неверны
{
lblError.Text = "Неверный пароль - попробуйте еще раз";
return ;
}
string id = return reader.GetInt32(0).ToString();
FormsAuthentication.RedirectFromLoginPage(id, chkbRememberLogin.Checked);
}
catch (OleDbException ex)
{
lblError.Text = "Ошибка базы данных";
}
finally
{
connection.Close();
}
}