Таким образом, в большинстве приложений вы будете использовать собственные хранилища имен и паролей пользователей, и большей частью, они будут находиться в базах данных вроде SQL Server. В ASP.NET 1.х вам приходилось реализовывать такие сценарии самостоятельно. В форме регистрации вы должны были подключаться к базе данных, проверять наличие пользователя, сравнивать введенный пароль с хранящимся в базе, и затем вызывать FormsAuthentication.RedirectFromLoginPage, если имя пользователя и пароль были указаны корректно. Эта техника демонстрируется в следующем примере, в котором предполагается, что вы написали функцию MyAuthenticate, которая подключается к базе данных SQL Server и читает соответствующую запись о пользователе. Он возвращает true, если введенное имя и пароль совпали с одним из хранящихся в базе данных.
protected void LoginAction_Click(object sender, EventArgs e)
{
Page.Validate();
if (!Page.IsValid) return;
if (this.MyAuthenticate(UsernameText.Text, PasswordText.Text))
{
FormsAuthentication.RedirectFromLoginPage(UsernameText.Text, false);
)
else
{
LegendStatus.Text = "Invalid username or password!";
}
}
К счастью, ASP.NET 2.0 предлагает готовую к использованию инфраструктуру, а также полный набор элементов управления, связанных с безопасностью, которые делают все это за вас. Каркас Membership API включает хранилище данных на базе SQL Server, в которое записываются пользователи и роли, а также функции для проверки имен и паролей, без необходимости знания подробностей устройства лежащей в основе базы данных, как вы увидите в главе 21. Более того, эта инфраструктура полностью расширяема за счет пользовательских поставщиков, речь о которых пойдет в главе 26.
предыдущая следующая страница вначало главы оглавление
846