Asp.net core 验证函数内部的防伪令牌

Asp.net core 验证函数内部的防伪令牌,asp.net-core,model-view-controller,.net-core,antiforgerytoken,Asp.net Core,Model View Controller,.net Core,Antiforgerytoken,我正在使用.netcore 3.0,目前我有一个API,它将接受外部(不带反伪造令牌)和内部(带反伪造令牌)调用,在这种情况下,我需要在API方法上添加[IgnoreAntiforgeryToken],并根据请求确定是否检查反伪造令牌 想知道api函数中是否存在验证反伪造令牌的方法?提前感谢。据我所知,如果您想调用Antiforgery类来验证Antiforgery令牌,您可以直接在api中调用IAntiforgery服务,然后使用ValidateRequestAsync来验证令牌 更多详细信息

我正在使用.netcore 3.0,目前我有一个API,它将接受外部(不带反伪造令牌)和内部(带反伪造令牌)调用,在这种情况下,我需要在API方法上添加[IgnoreAntiforgeryToken],并根据请求确定是否检查反伪造令牌


想知道api函数中是否存在验证反伪造令牌的方法?提前感谢。

据我所知,如果您想调用Antiforgery类来验证Antiforgery令牌,您可以直接在api中调用IAntiforgery服务,然后使用ValidateRequestAsync来验证令牌

更多详细信息,请参考以下代码:

1.添加
services.AddHttpContextAccessor()

2.在控制器中添加以下代码:

public class HomeController : Controller
{
    private readonly IAntiforgery _antiforgery;
    private readonly IHttpContextAccessor _httpcontextaccessor;
    public HomeController(IAntiforgery defaultAntiforgery, IHttpContextAccessor httpcontextaccessor)
    {
      

        _antiforgery = defaultAntiforgery;
        _httpcontextaccessor = httpcontextaccessor;

    }
    public async Task<IActionResult> PrivacyAsync()
    {

        try
        {
            await _antiforgery.ValidateRequestAsync(_httpcontextaccessor.HttpContext);

        }
        catch (Exception)
        {

            throw;
        }



        return View();
    }

}
公共类HomeController:控制器
{
私人只读IAntiforgery(u antiforgery);;
专用只读IHttpContextAccessor\u httpcontextaccessor;
公共家庭控制器(IAntiforgery defaultAntiforgery、IHttpContextAccessor httpcontextaccessor)
{
_Antifforgery=默认的Antifforgery;
_httpcontextaccessor=httpcontextaccessor;
}
公共异步任务privacySync()
{
尝试
{
wait _antiforgery.ValidateRequestAsync(_httpcontextaccessor.HttpContext);
}
捕获(例外)
{
投掷;
}
返回视图();
}
}

我使用与@Brando Zhang类似的方法

var _antiforgery=(IAntiforgery)this.HttpContext.RequestServices.GetService(typeof(IAntiforgery));
var IsValid = _antiforgery.IsRequestValidAsync(this.HttpContext).Result;
return IsValid;

谢谢你的回答,我今天早上发现了,忘了更新线程。我使用类似的方法。