Авторизация пользователей на сайте Asp.net

Рис.1. Элемент управления Login для авторизации

Для создания формы авторизации в Asp.net есть специальный элемент управления (контрол), который позволяет сократить время на создание формы авторизации. В нем уже реализованы простые проверки типа вводимых данных, например, проверка на пустые строки.

Рис.1. Элемент управления Login для авторизации

Рис.1. Элемент управления Login для авторизации

 

Перетащите контрол 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;
            }
        }

 


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

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment







MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика