授权过滤器属性未触发
public class AuthenticationRequiredAttribute : System.Web.Http.Filters.AuthorizationFilterAttribute
{
public override bool AllowMultiple
{
get { return false; }
}
public override void OnAuthorization(HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
}
我用属性装饰了控制器
[AuthenticationRequired]
public class ProfileController : BaseController
{
public ProfileController(IMyRepository repository)
: base(repository)
{
}
}
AuthenticationRequired过滤器未触发,我错过了什么?
您似乎使用的是 Web API 过滤器而不是 MVC 过滤器。 从
System.Web.Mvc.FilterAttribute
类和 System.Web.Mvc.IAuthorizationFilter
接口继承您的自定义授权过滤器,并实现 OnAuthorization()
方法。
例如,
using System.Web.Mvc;
using Sitecore;
namespace {YOUR_PROJECT_NAMESPACE}
{
public class AuthenticationRequired : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
{YOUR_CUSTOM_CODE_LOGIC}
}
}
}
您可以在应用程序中分三个级别配置自定义过滤器:
全局级别,通过在
Application_Start
事件中注册您的过滤器Global.asax.cs
;
控制器级别通过将过滤器放在控制器名称的顶部来用过滤器装饰控制器;
操作级别,通过与上面的控制器类似的方式用过滤器装饰给定的操作方法。
在您的情况下,您只需使用自定义过滤器装饰控制器即可。
希望这有帮助。