我在Windows身份验证的Visual Studio 2015中使用ASP.NET MVC 5。目前,用户连接到无缝应用程序 - 通过具有在Web.config文件中的以下没有登录屏幕,:MVC Windows身份验证+通过AspNetUserRoles表进行角色管理
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
然后Global.asax.cs
具有此授权:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalFilters.Filters.Add(new System.Web.Mvc.AuthorizeAttribute()
{ Roles = "Some-AD-Group, Another-AD-Group" });
}
上述过滤器将允许进入应用程序的人限制在AD组中。我想使用SQL Server上内置的[AspNet*]
表来管理授权并将用户与角色进行匹配。
example允许我创建自定义授权,但是如何从[AspNetUserRoles]
表中获取用户的角色以及我在哪里存储用户会话的持续时间?
这是另一个example与角色一起工作,但不知道它在哪里得到它们。 article中也有很多很好的信息,但没有将它与Windows身份验证捆绑在一起。
感谢您的帮助。
更新:该过滤器将被替换为AspNetUserRoles;目前这只是一种绷带,让我们拭目以待。
我正在使用Windows进行身份验证,但希望使用数据库上的角色进行更细粒度的授权。 – Alex
为什么您可以使用Windows身份验证但不能使用Windows组? – ozz