理解した。
各コントローラーの名前空間をチェックするフィルターを適用しただけです。すべての API コントローラーが含まれてHSServer.Controllers.Apiおり、すべての Web コントローラーがHSServer.Controllers.Webこのコードに含まれてFilterConfig.csいるため、魅力的に機能します。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new FrontendAuthorize());
filters.Add(new HandleErrorAttribute());
}
}
public class FrontendAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
try
{
if (!filterContext.Controller.GetType().Namespace.StartsWith("HSServer.Controllers.Api"))
base.OnAuthorization(filterContext);
}
catch (NullReferenceException)
{
base.OnAuthorization(filterContext);
}
}
}