ASP.NET 5 个用于 Windows 身份验证的自定义角色

ASP.NET 5 Custom roles for Windows Authentication

我正在使用 ASP.NET 5 构建一个使用 Windows 身份验证的 Intranet 类型站点。我有身份验证工作,但我不希望域中的每个人都可以访问内部网站。我不能使用域角色,所以我在 SQL 服务器中设置了自己的自定义角色。我有一个 table 将域用户名映射到角色。我想将对 Intranet 站点的访问限制为仅具有在我的 SQL 服务器角色 table 中定义的角色的用户。如何在 ASP.NET 5 中为 Windows 身份验证设置自定义角色?谢谢!

您没有设置自定义角色。您需要创建自定义授权属性,如 here 所述。

更新:

是的,您可以在全局范围内使用您的自定义授权属性。假设这是您的自定义授权属性:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var username = httpContext.User.Identity.Name;

        // Check to see if user has a role in the database
        var isAuthorized = db.User.Find(username).Any();

        return isAuthorized;
    }
}

然后,您可以像这样在 Action 级别或 Controller 级别使用它:

[MyAuthorize]
public ActionResult Index()
{
}

或者,您可以在 App_Start 文件夹下的 FilterConfig class 中将其注册为全局过滤器,如下所示:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyAuthorizeAttribute());
    }
}