假设一种情况:项目中需要做认证和权限控制,而且需要权限才能访问的控制器要远多于可以匿名访问的(类似AO系统那样,登陆了才能用)。
那在每个控制器上加一个 [Authorize] 是能解决问题,反正正我是觉得麻烦。
而且Core自带的权限认证机制不满足于复杂的身份权限认证,打算像在Framework中一样注册一个全局过滤器,然后用 [AllowAnonymous] 来放行可以匿名的控制器或者方法。
按照官方文档,自定义身份过滤器推荐实现 IAuthorizationFilter 或者 IAsyncAuthorizationFilter 接口,再顺便给他们定义为中间件更好。
例如
1 public class MyAuthorizeFilter : IAuthorizationFilter 2 { 3 public void OnAuthorization(AuthorizationFilterContext context) 4 { 5 //do something... 6 } 7 } 8 9 public class MyAsyncAuthorizeFilter : IAsyncAuthorizationFilter 10 {