如何为webapi

时间:2016-09-01 07:06:31

标签: asp.net logging asp.net-web-api

我创建了一个ASP.NET Web API 2端点,控制器受[Authorized]属性保护。

未经身份验证的访问权限将获得401 UnAuthorized http状态。

现在,我想将这些未经授权的访问记录到日志文件中。但是,我不知道在哪里处理未经授权的访问。

1 个答案:

答案 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" };
    }
}