Asp.net mvc 4 MVC 4 Windows身份验证和自定义授权

Asp.net mvc 4 MVC 4 Windows身份验证和自定义授权,asp.net-mvc-4,authorization,Asp.net Mvc 4,Authorization,我花了一些时间试图掌握在我的应用程序中处理身份验证/授权的最佳方法。我正在使用windows身份验证,并且能够读取用户名 要授权用户,我需要查询数据库以获取其角色,并为具有该角色的用户创建自定义主体 我相信下面的方法会奏效,但是,我只是好奇是否有更好的方法只查询数据库一次,而不是使用会话变量作为检查 下面的代码在my Global.asax中 protected void Application_AuthenticateRequest(object sender, EventArgs args)

我花了一些时间试图掌握在我的应用程序中处理身份验证/授权的最佳方法。我正在使用windows身份验证,并且能够读取用户名

要授权用户,我需要查询数据库以获取其角色,并为具有该角色的用户创建自定义主体

我相信下面的方法会奏效,但是,我只是好奇是否有更好的方法只查询数据库一次,而不是使用会话变量作为检查

下面的代码在my Global.asax中

protected void Application_AuthenticateRequest(object sender, EventArgs args)
    {
        if (HttpContext.Current != null)
        {
            if (this.Session["Authenticated"] == null)
            {
                using (AppToolsEntities db = new AppToolsEntities())
                {
                    var user = db.ADObjects.Where(x => x.CN == User.Identity.Name.RemoveDomain()).FirstOrDefault();
                    string[] roles = new string[] { user.Title == "EA" ? "Reviewer" : "Admin" };
                    GenericPrincipal principal = new GenericPrincipal(HttpContext.Current.User.Identity, roles);
                    Thread.CurrentPrincipal = HttpContext.Current.User = principal;
                    this.Session["Authenticated"] = true;
                }
            }
        }
    }
我这样做对吗

提前谢谢