Для создания формы авторизации в Asp.net есть специальный элемент управления (контрол), который позволяет сократить время на создание формы авторизации. В нем уже реализованы простые проверки типа вводимых данных, например, проверка на пустые строки.
Перетащите контрол Login из одноименной группы на страницу Aspx. Ниже контрола добавьте контрол типа Panel и в нем контрол Label. Panel сделайте скрытой, она станет видимой, когда пользователь успешно авторизуется. Добавьте обработчик для события Authenticate для контрола Login. Не выдумывая, я оставил для примера то, которое подставлялось:
<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
</asp:Login>
<asp:Panel ID="Panel1" runat="server" Visible="false">
<asp:Label ID="lbl1" runat="server"></asp:Label>
<br />
<asp:HyperLink ID="HyperLink1" NavigateUrl="~/cuser.aspx" runat="server">Для авторизованных</asp:HyperLink>
</asp:Panel>
Теперь перейдите к коду обработчика Login1_Authenticate в code-behind файле и добавьте следующие строки:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (ValidationFunction(Login1.UserName, Login1.Password) == true)
{
Login1.Visible = false;
Panel1.Visible = true;
lbl1.Text = "Добро пожаловать!";
}
else
{
e.Authenticated = false;
Panel1.Visible = false;
}
}
Также добавьте описание метода для проверки авторизации. Для примера функция будет осуществлять проверку для "захардкоженного" пользователя - user = admin, password = pass@word1.
private bool ValidationFunction(string userName, string passWord)
{
//user = admin, password = pass@word1
bool boolReturnValue = false;
if (userName == "admin" & passWord == "pass@word1") boolReturnValue = true; # Никогда так не делайте в промышленных решениях!!
return boolReturnValue;
}
В обработчик Login1_Authenticate можно добавить создание файла cookies, чтобы информация об авторизации сохранялась при переходе между страницами. Для этого в верху code-behind файла добавьте "using System.Web.Security;" и измените код обработчика на приводимый ниже:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (ValidationFunction(Login1.UserName, Login1.Password) == true)
{
Login1.Visible = false;
Panel1.Visible = true;
lbl1.Text = "Добро пожаловать!";
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(Login1.UserName, true, 2);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.Expires = authTicket.Expiration;
HttpContext.Current.Response.Cookies.Set(cookie);
}
else
{
FormsAuthentication.SetAuthCookie(Login1.UserName, false);
e.Authenticated = false;
Panel1.Visible = false;
}
}


