gpt4 book ai didi

asp.net-mvc-4 - 如何在没有隐藏输入的情况下获取 AntiForgeryToken 值

转载 作者:行者123 更新时间:2023-12-03 10:26:38 25 4
gpt4 key购买 nike

@Html.AntiForgeryToken()
呈现隐藏输入

<input name="__RequestVerificationToken" type="hidden" value="GuiNIwhIJZjINHhuS_8FenaFDXIiaE" />

我怎样才能只获得代币值(value)?
没有像这样丑陋的代码:
public static IHtmlString AntiForgeryTokenValue(this HtmlHelper htmlHelper) {
var field = htmlHelper.AntiForgeryToken().ToHtmlString();
var beginIndex = field.IndexOf("value=\"") + 7;
var endIndex = field.IndexOf("\"", beginIndex);
return new HtmlString(field.Substring(beginIndex, endIndex - beginIndex));
}

最佳答案

MVC 的反 CSRF 能力实际上取决于两个 token :一个是隐藏的表单元素,另一个是 cookie。所以 Html.AntiForgeryToken() 帮助器不只是返回一个 HTML 片段。它也有设置这个 cookie 的副作用。请注意,cookie 值和表单值不相等,因为它们各自编码不同的信息片段。

如果您使用 AntiForgery.GetTokens API,此方法将返回原始 token 而不是生成 HTML 片段。该方法的参数是:

  • oldCookieToken:如果请求已包含反 CSRF cookie token ,请在此处提供。该参数可能为空。
  • newCookieToken(输出参数):如果 oldCookieToken 为 null 或不代表有效的反 CSRF cookie token ,则此参数将填充您应放入响应 cookie 的值。如果 oldCookieToken 代表一个有效的反 CSRF token ,那么当方法返回时 newCookieToken 将包含 null,并且您不必设置响应 cookie。
  • formToken(输出参数):此参数将填充回发到服务器时应出现在表单正文中的 token 。这是在调用 Html.AntiForgeryToken() 时最终被隐藏输入元素包装的值。

  • 如果您使用此 API 手动生成 cookie 和表单 token ,则需要调用 the corresponding overload AntiForgery.Validate 以验证 token 。

    关于asp.net-mvc-4 - 如何在没有隐藏输入的情况下获取 AntiForgeryToken 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925446/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com