Jer*_*emy 7 asp.net authentication asp.net-mvc windows-authentication asp.net-core
我正在使用ASP.NET 5构建一个使用Windows身份验证的Intranet类型站点.我有身份验证工作,但我不希望域中的每个人都可以访问Intranet站点.我无法使用域角色,因此我在SQL Server中设置了自己的自定义角色.我有一个表将域用户名映射到角色.我想将对Intranet站点的访问权限仅限于在我的SQL Server角色表中定义了角色的用户.如何在ASP.NET 5中为Windows身份验证设置自定义角色?谢谢!
ata*_*ati 10
您没有设置自定义角色.您需要创建一个自定义的授权属性,如所描述这里.
更新:
是的,您可以全局使用自定义授权属性.让我们说这是您的自定义授权属性:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在Action级别或Controller级别使用它,如下所示:
[MyAuthorize]
public ActionResult Index()
{
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在App_Start文件夹下的FilterConfig类中将其注册为全局过滤器,如下所示:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyAuthorizeAttribute());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7774 次 |
| 最近记录: |