You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ASP.NET Core中如何手动生成anti forgery token

手动生成Anti Forgery Token实现方案

实现逻辑

ASP.NET 框架本身已经内置了成熟的防伪令牌处理服务,无需自己实现加密、校验逻辑,直接调用内置接口生成即可,安全性更有保障。

代码实现

适用于ASP.NET Core版本

public class TokenController : Controller
{
    private readonly IAntiforgery _antiforgery;

    // 构造函数注入框架内置的防伪令牌服务
    public TokenController(IAntiforgery antiforgery)
    {
        _antiforgery = antiforgery;
    }

    [HttpPost]
    [IgnoreAntiforgeryToken]
    public ActionResult Generate()
    {
        // 生成并存储令牌到当前请求上下文(会自动写入防伪Cookie)
        var antiforgeryTokens = _antiforgery.GetAndStoreTokens(HttpContext);
        // 返回前端请求需要携带的请求令牌值
        return Json(antiforgeryTokens.RequestToken);
    }
}

适用于.NET Framework MVC版本

public class TokenController : Controller
{
    [HttpPost]
    [IgnoreAntiforgeryToken]
    public ActionResult Generate()
    {
        string cookieToken, requestToken;
        // 生成两段式防伪令牌
        AntiForgery.GetTokens(null, out cookieToken, out requestToken);
        // 可根据需求返回拼接后的完整令牌,或者分别返回两个值
        var token = $"{cookieToken}:{requestToken}";
        return Json(token);
    }
}

注意事项

  • 前端调用接口拿到令牌后,后续需要校验的请求默认在请求头里携带RequestVerificationToken字段,值为生成的请求令牌即可
  • .NET Framework场景下手动校验令牌时,需要拆分拿到的cookieToken和requestToken,调用AntiForgery.Validate(cookieToken, requestToken)完成校验
  • 不要自定义实现令牌加密逻辑,直接使用框架内置服务即可,避免出现安全漏洞
  • 生产环境需要限制Generate接口的访问权限,不要开放匿名访问

内容的提问来源于stack exchange,提问作者Mehdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:39:04