理解した。
各コントローラーの名前空間をチェックするフィルターを適用しただけです。すべての 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);
}
}
}