ASP.NET WebForms - Как авторизовать доступ к странице
В последнем приложении ASP.NET WebForms мы больше не являемся пользователем RoleManager и т. Д. (Насколько я могу судить), так как же нам разрешить доступ к веб-странице для определенной роли?
В MVC я бы использовал атрибут Authorize, но его нет в WebForms, так что я в растерянности - есть идеи?
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>
Изучите использование файла / a web.config и элемента авторизации. для этой цели вы можете создать файл web.config в любом каталоге (т. е. вы можете иметь несколько файлов web.config по всему сайту).
одна ссылка (см. также другие ссылки): https://msdn.microsoft.com/en-us/library/8d82143t%28v=vs.85%29.aspx