csharp 验证可用于web api的AntiForgery令牌属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 验证可用于web api的AntiForgery令牌属性相关的知识,希望对你有一定的参考价值。

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public sealed class ValidateAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
{
    public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
    {
        try
        {
          //could add optional ajax header check here
            AntiForgery.Validate();
        }
        catch
        {
            actionContext.Response = new HttpResponseMessage 
            { 
                StatusCode = HttpStatusCode.Forbidden, 
                RequestMessage = actionContext.ControllerContext.Request 
            };
            return FromResult(actionContext.Response);
        }
        return continuation();
    }

    private Task<HttpResponseMessage> FromResult(HttpResponseMessage result)
    {
        var source = new TaskCompletionSource<HttpResponseMessage>();
        source.SetResult(result);
        return source.Task;
    }
}

以上是关于csharp 验证可用于web api的AntiForgery令牌属性的主要内容,如果未能解决你的问题,请参考以下文章

Web API过滤器

对于仅由其他Web服务使用的Web API,建议的身份验证类型是什么

csharp 验证测试Api控制器

用于 aspnet-core web api 的基于令牌的身份验证

将身份验证同时用于 MVC 页面和 Web API 页面?

csharp 使用facebook令牌验证您的网络API