asp.net-mvc - 在 asp.net MVC 中使用 ValidateAntiForgeryToken 和 JQGrid?
问题描述
在使用 JQuery.jqGrid v4.4.4 的混合 asp.net web 表单/mvc 5.2.6 应用程序中,我正在努力寻找一种方法来使用 jqGrid 在获取其数据时发布到的 Controller 方法上的 ValidateAntiForgeryToken 属性。
网格是只读的。“数据类型”是“json”,“mtype”是“POST”。我尝试简单地将 __RequestVerificationToken 隐藏输入的值附加到返回到控制器的数据中,但这不起作用;该网站只是抛出一个丢失的防伪令牌异常。
我注意到,当想要将 json 数据的 $.ajax 发布到 Controller 方法时,可以在“headers”参数中传递 __RequestVerificationToken。虽然 jqGrid 在后台进行 $.ajax 调用,但不幸的是它没有 headers 参数。
我在 SO 上找到了示例,其中可以通过 editData 参数传递令牌(例如:JQGrid 能够通过主 CRUD 控件传递 ValidateAntiForgeryToken?),但我的网格是只读的,无论如何我都想当用户输入搜索条件然后单击按钮填充网格时强制执行令牌。
填充 jqgrid 时有什么方法可以使用 ValidateAntiForgeryToken 吗?
解决方案
您可以包含具有定义为以下函数的属性的postData
参数:__RequestVerificationToken
postData: {
__RequestVerificationToken: function () {
return jQuery("input[name=__RequestVerificationToken]").val();
}
}
它将__RequestVerificationToken
在填充网格期间向发送到服务器的所有请求添加参数。
推荐阅读
- nginx - kube-proxy 和 nginx 后端之间的连接被拒绝
- java - Spark SQL Java 无法将元组转换为行和数据帧
- javascript - V-menu 无法向下滚动查看其他列表
- django - 阻止用户访问 Django 网址
- c# - c#磁盘I\O效率提升一次读取多行
- java - 按其第一列然后第二列排序arraylist
- javascript - 如何在 JavaScript 中从 ArrayBuffer 中添加和删除单个位?
- javascript - 变量中具有多个值的 switch 语句
- excel - 复制和匹配来自不同工作表的列
- typescript - 如何使用打字稿转换引用声明性代码?