2017-03-09 162 views
3

我在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;目前这只是一种绷带,让我们拭目以待。

回答

1

您需要为此编写一个自定义Auth提供程序。

一种方法可能是做这样的事情:

https://www.codeproject.com/Articles/5353/Custom-Authentication-provider-by-implementing-IHt

,或者您可能能够利用现有WindowsAuthenticationProvider类的框架,并继承它来“覆盖”的角色为基础的方法。

,如果你想多带几个选项的深入介绍,这可能是有用的...

https://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way

但offficial文档,你可能要开始从这里开始......

https://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

1

Windows身份验证是不同的事情,你不能将它们绑在一起。

随着Windows,网络管理员创建Windows组,并将用户放入其中。

它们不受限于数据库,可用于其他应用程序。

+0

我正在使用Windows进行身份验证,但希望使用数据库上的角色进行更细粒度的授权。 – Alex

+0

为什么您可以使用Windows身份验证但不能使用Windows组? – ozz

相关问题