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

时间:2015-05-10 04:12:02

标签: asp.net asp.net-mvc authentication windows-authentication asp.net-core

我正在使用ASP.NET 5构建一个使用Windows身份验证的Intranet类型站点。我有身份验证工作,但我不希望域中的每个人都可以访问Intranet站点。我无法使用域角色,因此我在SQL Server中设置了自己的自定义角色。我有一个表将域用户名映射到角色。我想将对Intranet站点的访问权限仅限于在我的SQL Server角色表中定义了角色的用户。如何在ASP.NET 5中为Windows身份验证设置自定义角色?谢谢!

1 个答案:

答案 0 :(得分:9)

您没有设置自定义角色。您需要创建自定义授权属性,如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类中将其注册为全局过滤器,如下所示:

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