我正在使用ASP.NET 5构建一个使用的intranet类型站点。我有身份验证工作,但我不希望域上的每个人都可以访问intranet站点。我不能使用域角色,所以我已经在Server中设置了自己的自定义角色。我有一个表,它将域名用户名映射到角色。我希望将对intranet站点的访问仅限于在Server角色表中定义的角色的用户。如何在ASP.NET 5中为Windows身份验证设置自定义角色?谢谢!
发布于 2015-05-10 05:48:19
您不需要设置自定义角色。您需要创建一个自定义授权属性,正如所描述的这里。
更新:
是的,您可以全局地使用您的自定义授权属性。假设这里是您的自定义授权属性:
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()
{
}或者,可以将其注册为FilterConfig类中的App_Start文件夹下的全局筛选器,如下所示:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyAuthorizeAttribute());
}
}https://stackoverflow.com/questions/30147627
复制相似问题