有一个经过Windows身份验证的(Intranet).net核心Web应用程序。
由于用户已经通过身份验证,因此该部分已完成。我不在乎索赔等。只想针对列表(从sql)运行用户名的简单检查。任何有效的域用户都可以访问该站点,但是我们希望根据自定义列表和Db中的其他一些检查来检查该用户,以查看他们是否可以使用此api。
我缺少什么或剩下什么可以将此用作api操作属性?想法是在控制器级别使用它。
public class ApiAuthFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
var httpContext = context.HttpContext;
// get user name
string userName = httpContext.User.Identity.Name;
// check against list to see if access permitted
if(!CheckUser(userName) ) {
context.Result = new ForbidResult();
}
}
}
我缺少什么或剩下什么可以将此用作api操作属性?这个想法是在控制器级别使用它
如果您想使用授权过滤器作为属性,
1.一种方法是可以使用TypeFilterAttribute
[TypeFilter(typeof(ApiAuthFilter))]
public class HomeController : Controller
2.另一种方式是您只需要继承AuthorizeAttribute
ApiAuthFilter:
public class ApiAuthFilter : AuthorizeAttribute,IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
var httpContext = context.HttpContext;
// get user name
string userName = httpContext.User.Identity.Name;
// check against list to see if access permitted
if (!CheckUser(userName))
{
context.Result = new ForbidResult();
}
}
}
然后,您可以在控制器级别使用它,例如:
[ApiAuthFilter]
public class HomeController : Controller
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句