我创建了一个ASP.NET Web API 2端点,控制器受[Authorized]
属性保护。
未经身份验证的访问权限将获得401 UnAuthorized http状态。
现在,我想将这些未经授权的访问记录到日志文件中。但是,我不知道在哪里处理未经授权的访问。
答案 0 :(得分:2)
解决方案只是创建一个自定义的Authorize过滤器,以这种方式继承默认的Authorize属性:
public class LogAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var authorized = base.IsAuthorized(actionContext);
if (!authorized)
{
// log the denied access attempt.
}
return authorized;
}
}
这样,您可以从父级保留相同的授权验证,但是您可以执行其他操作,例如登录您的案例以进行未经授权的访问。
然后,您可以在Web API方法上使用它:
public class ValuesController : ApiController
{
[LogAuthorize]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}