基于角色的ASP.net MVC 4授权

时间:2015-12-13 20:53:57

标签: asp.net asp.net-mvc roles authorize

我正致力于在ASP.net中创建角色系统。 现在它工作正常,因为我可以将角色与用户关联

正如你在这里看到的那样。

AspNetUserRoles

现在我的问题是我应该怎样做才能使基于角色的访问工作。 因为某种方式不起作用。 它将我作为超级管理员发送回登录页面

    [DllImport("user32.dll")]
        static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);    

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                Process p = Process.Start(textBox1.Text);
                p.WaitForInputIdle();
                SetParent(p.MainWindowHandle, panel1.Handle);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
}

的Web.config

 [Authorize(Roles = "Superadmin")]
    public ActionResult Upload()
    {
        return View();
    }

我希望有人可以帮助我。

格尔茨

1 个答案:

答案 0 :(得分:0)

您需要在UserPrincipal文件

中的Global.asax中添加角色
protected void Application_AuthenticateRequest(Object sender, EventArgs e) 
{  
    HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];

    if (authCookie != null) 
    {
        FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        // Read the roles from cookie
        string[] roles = authTicket.UserData.Split(new Char[] { ',' });

        GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(authTicket.Name), roles);
        Context.User = userPrincipal;
    }
}

创建自定义Authorize属性并覆盖OnAuthorization方法

public override void OnAuthorization(AuthorizationContext filterContext)
{
    // Check if the user is authorized to access else redirect to unauthorized page
    base.OnAuthorization(filterContext);
}