ASP.NET WebForms — как авторизовать доступ к странице

В последнем приложении ASP.NET WebForms мы больше не используем RoleManager и т. д. (насколько я могу судить), так как же нам авторизовать доступ к веб-странице для определенной роли?

В MVC я бы использовал атрибут Authorize, но его нет в WebForms, поэтому я в недоумении — есть идеи?


person Dave Gordon    schedule 11.07.2015    source источник
comment
Возможный дубликат существует ли authorizeattribute эквивалентен только стандартным веб-формам (не MVC) для .net   -  person Muhammad Omar ElShourbagy    schedule 27.12.2016


Ответы (2)


попробуйте этот код при входе в систему, чтобы передать роль FormsAuthenticationTicket

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserName.Text, DateTime.Now, DateTime.Now.AddMinutes(2880), false, role, FormsAuthentication.FormsCookiePath);
            string hash = FormsAuthentication.Encrypt(ticket);
            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

            if (ticket.IsPersistent)
            {
                cookie.Expires = ticket.Expiration;
            }
            Response.Cookies.Add(cookie);
            Response.Redirect(FormsAuthentication.GetRedirectUrl(UserName.Text, false));

на конкретной веб-форме в роли получения события Page_Load

protected void Page_Load(object sender, EventArgs e)
    {

             FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
             FormsAuthenticationTicket ticket = id.Ticket;
             string userData = ticket.UserData;
             string[] temp = userData.Split(',');
             role=temp[0];
         if (role!="Owner")
         {
             Response.Write("............");
         }
    }

если вы хотите авторизоваться на уровне папки, то вместо проверки роли на веб-форме укажите роль в файле web.config этой папки

 <authorization>
  <allow  roles="Owner"/>
  <deny users="*"/>
</authorization>
person Shahid Awan    schedule 11.07.2015

изучите использование файла /a web.config и элемента авторизации. для этой цели вы можете создать файл web.config в любом каталоге (т. е. у вас может быть несколько файлов web.config на сайте).

одна ссылка (посмотрите и на другие ссылки): https://msdn.microsoft.com/en-us/library/8d82143t%28v=vs.85%29.aspx

person wazz    schedule 11.07.2015