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());
}
}
我正在使用 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());
}
}