【问题标题】:How can i inject the AntiForgery token?如何注入 AntiForgery 令牌?
【发布时间】:2020-04-30 20:15:20
【问题描述】:

在我的_Layout.cshtml 中使用时

@using Microsoft.AspNetCore.Antiforgery
@inject IAntiforgery AntiForgery;

我希望 RequestVerificationToken 出现在请求标头中。

但是没有达到预期。在检查请求标头时, RequestVerificationToken 根本不存在。

这是否与net Core 3.0 有某种关系,还是我遗漏了什么?

【问题讨论】:

    标签: .net asp.net-core asp.net-core-3.0


    【解决方案1】:

    如果您使用 ajax 查询来发送 antiforgeryToken,请按照以下步骤操作。否则 RequestVerificationToken 将自动添加到 formData 中

    将以下内容添加到您的 cshtml 和 js 中

    @inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
    @functions{
        public string GetAntiXsrfRequestToken()
        {
            return Xsrf.GetAndStoreTokens(Context).RequestToken;
        }
    }
    
    <form>
          <input type="hidden" id="RequestVerificationToken"
                   name="RequestVerificationToken" value="@GetAntiXsrfRequestToken()" />
    </form>
    
    

    将此添加到您的 XMLHttpRequest 实例中

    xhttp.setRequestHeader("RequestVerificationToken", 
                        document.getElementById('RequestVerificationToken').value);
    

    【讨论】:

    • 需要喝咖啡休息时间。未包含在 POST.... 标头中:{ 'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val() },
    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2013-01-06
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多