ASP.NET WebForms - 如何授权访问页面

时间:2015-07-11 04:54:34

标签: c# asp.net webforms authorization authorize-attribute

在最新的ASP.NET WebForms应用程序中,我们不再使用RoleManager等(据我所知),那么我们如何授权访问特定角色的网页呢?

在MVC中,我会使用Authorize属性但在WebForms中不存在,所以我不知所措 - 任何想法?

2 个答案:

答案 0 :(得分:2)

查看使用/ a web.config文件和授权元素。您可以为此目的在任何目录中创建web.config文件(即,您可以在整个站点中包含多个web.config文件)。

一个链接(也可以查看其他链接): https://msdn.microsoft.com/en-us/library/8d82143t%28v=vs.85%29.aspx

答案 1 :(得分:1)

试试这段代码 登录时将角色传递给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("............");
         }
    }

如果您想在文件夹级别进行授权,则不要在webform上检查角色,而是在该文件夹的web.config文件中指定角色

 <authorization>
  <allow  roles="Owner"/>
  <deny users="*"/>
</authorization>