首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证函数内部的防伪令牌

验证函数内部的防伪令牌
EN

Stack Overflow用户
提问于 2020-10-27 12:31:05
回答 2查看 59关注 0票数 0

我正在使用API3.0,目前我有一个可以接受外部(没有防伪令牌)和内部(有防伪令牌)调用的.netcore,在这种情况下,我需要在API方法上添加IgnoreAntiforgeryToken,并根据请求来确定是否检查防伪令牌。

想知道在api函数中有没有验证防伪令牌的方法?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-27 15:57:56

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

更多细节,你可以参考下面的代码:

1.在startup.cs ConfigureServices方法中添加services.AddHttpContextAccessor();

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

代码语言:javascript
复制
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();
    }

}
票数 1
EN

Stack Overflow用户

发布于 2020-10-27 16:07:08

我使用类似的方法@Brando Zhang

代码语言:javascript
复制
var _antiforgery=(IAntiforgery)this.HttpContext.RequestServices.GetService(typeof(IAntiforgery));
var IsValid = _antiforgery.IsRequestValidAsync(this.HttpContext).Result;
return IsValid;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64548339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档