提问人:VIjay Jainapure 提问时间:8/8/2023 更新时间:8/8/2023 访问量:22
尽管在 ASP.NET 应用程序中更改了 cookie 名称,但是否建议在客户端代码中保留防伪令牌的默认字段名称?
Is It Advisable to Keep the Default Field Name for Anti-Forgery Tokens in Client-Side Code Despite Changing the Cookie Name in an ASP.NET Application?
问:
我们最近使用 AntiForgeryConfig.CookieName 配置将 ASP.NET 应用程序中用于防伪令牌的 cookie 名称更改为“customToken”。但是,在 AJAX 请求中发送防伪令牌的客户端 JavaScript 代码仍使用默认字段名称“__RequestVerificationToken”。尽管该应用程序似乎运行良好,但我担心潜在的长期影响,包括兼容性问题、可维护性和最终用户体验。您能否提供指导,说明我们是否应该更新 JavaScript 代码以匹配更改的 cookie 名称,以及确保一致性和避免未来并发症的最佳方法?
答:
0赞
MRP
8/8/2023
#1
您需要更新客户端 JavaScript 代码,以使用与防伪令牌 Cookie 相同的名称。可以使用 Razor 视图中的方法更新 JavaScript 代码,以生成具有正确名称和值的防伪令牌的隐藏字段。然后,可以使用 jQuery 检索此字段的值,并将其包含在 AJAX 请求中。@Html.AntiForgeryToken()
例如,可以将以下代码添加到 Razor 视图:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<!-- other form fields -->
}
这将生成一个隐藏字段,其中包含每个请求唯一的名称和值。然后,可以使用 jQuery 检索此值并将其包含在 AJAX 请求中:customToken
var token = $('input[name="customToken"]').val();
$.ajax({
url: '/api/your-endpoint',
type: 'POST',
data: {
// other data fields
customToken: token
}
});
这将确保客户端 JavaScript 代码在 AJAX 请求中以正确的名称发送防伪令牌,并且可以在服务器端正确验证它。
评论
0赞
VIjay Jainapure
8/8/2023
我没有在客户端更新代码。但是我的应用程序如何运行良好?
0赞
pcalkins
8/12/2023
这有 2 个部分......Cookie 和隐藏字段。cookie是自动发送的...隐藏字段是您唯一需要处理的字段。(通过发送整个表单,或按上述方式单独添加表单字段......
评论