ASP.NET MVC AntiForgeryToken 和缓存

2024-02-09

我目前正在开发一个 ASP.NET MVC 项目,并遇到了一个看起来很奇怪的错误。

在 ASP.NET MVC 模板表单中,始终会获得 AntiForgeryToken(因此我相信这是最佳实践)。然而,AntiForgeryTokens 似乎不能很好地与缓存配合使用。

例如,当我打开一个包含 AntiForgeryToken 表单的网站并复制浏览器窗口时,两个窗口都具有完全相同的 AntiForgeryToken,导致发布表单时出现异常。禁用缓存时不存在此问题(通过 ActionFilter NoCache,请参阅禁用整个 ASP.NET 网站的浏览器缓存 https://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache).

所以我想我的问题是:事情应该是这样吗?除了禁用缓存之外还有其他方法可以解决这个问题吗?

特别是默认的 ASP.NET MVC 模板包含 AntiForgeryTokens 但不禁用缓存(因此容易出现上述错误)这一事实让我感到好奇。

提前致谢!


这是预期的行为。缓存可以很好地缓存答案,包括 AntiForgeryToken 的值。禁用表单上的缓存,特别是使用 AntiForgeryToken 的页面上的缓存。如果您进一步考虑这一点,如果您使用的是数据输入应用程序,您是否想要缓存数据输入表单?可能不会。然而,您确实希望缓存大量报告——即使它只是微缓存——一两秒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC AntiForgeryToken 和缓存 的相关文章

随机推荐

  • 将关联数组转换为具有关联子数组的索引数组

    我有一个带有国家 地区数据的简单关联数组 如下所示 array array country1 gt CountryOne country2 gt Country Two 我怎么能够动态地将此数组转换为多个数组 如下所示 array 2 0
  • 将 android 预览帧转换为 OpenCV Mat

    我正在尝试从相机预览中捕获图像并使用 OpenCV 将其转换为 Mat 对象 我注册了callbak方法public void onPreviewFrame byte data Camera camera 所以我从相机收到所有预览帧 但无法
  • 在laravel 4中的插入查询存储过程中传递参数

    我创建了一个插入过程 但不知道如何在控制器和模型中调用参数 名称 和 路径 存储过程 CREATE DEFINER root localhost PROCEDURE insert document details IN name VARCH
  • 在 Angular 2.0.0-beta.0 中,表单输入的 Observable 中缺少 map() 和 filter()

    在 Angular 2 0 0 alpha 47 中Observable从呼叫中返回formInput valueChanges 拥有所有高阶函数 即我可以做这样的事情 this search valueChanges debounceTi
  • 找不到“org.eclipse.persistence”Maven 依赖项

    我使用 m2eclipse maven 插件安装了 Eclipse Helios 我想使用 JPA 创建一个应用程序 所以 我所做的是 新建 gt Maven 项目 然后选择 Maven 默认原型 问题是我想添加我找不到的 org ecli
  • Java中synchronized关键字的记忆效应

    这个问题之前可能已经得到解答 但由于问题的复杂性 我需要确认 所以我重新表述这个问题 问题1 当线程进入同步块时 内存屏障将包括所触及的任何字段 而不仅仅是我同步的对象的字段 因此 如果在同步块内修改许多对象 则会在线程内存缓存之间进行大量
  • 如何通过Javascript更改CSS类样式?

    根据我正在阅读的书 当你使用Javascript时 最好按类更改CSS 但如何呢 有人可以为此提供一个示例片段吗 假设您有 div class oldclass text div 以及以下样式 oldclass color blue new
  • 是否有 VBA 代码来查看 Enterprise Project 2013 文件在打开之前是否已签出?

    试图帮助我们的 Project 2013 用户使用一些 VBA 代码 但我们似乎无法找到答案来查找是否使用 VBA 在我们的 PWA 服务器上检出 Project 2013 文件 它们基本上有一个项目列表 设置为单个项目文件中的任务 VBA
  • Android 定时器摆动

    我需要创建一个计时器来定期更新用户界面 但 Swing Timer 类在 Android 上不可用 我该如何解决这个问题 我会避免创建线程 然后使用 java util 包中的 Timer 类 你可以使用Handler http devel
  • 如何在 Mac OS X 上获取内存泄漏的行编号堆栈跟踪?

    我已经成功获得了 Xcodeleaks报告我的命令行 GCC Ada 程序中的泄漏的工具 通过添加delay 11 0 最后让leaks进行检查 然后 export MallocStackLogging 1 foobar leaks foo
  • 正则表达式中的[^.]*是什么意思?

    我试图从以下文本中获取 482 75 span 482 75 span 我使用的正则表达式是 regex span span 它起作用了 但我不明白的是为什么 可以在这里匹配 aapl 我的理解是 表示除换行符之外的任何字符 表示否定 因此
  • 如何在 ASP.NET Core MVC 上正确设置 cookie 的过期日期时间

    我正在尝试从后端 Asp Net core 向浏览器设置一个 Cookie 该 Cookie 应在第二天同一时间减去 5 分钟后过期 这是来自控制器的 C 代码 HttpContext Response Cookies Append MyC
  • Erlang - 随机数生成器

    我正在使用以下内容生成一个近乎随机的数字 3 gt erlang ref to list make ref Ref lt 0 0 0 36 gt 我想要的是00036 嗯 这就是我在上一篇文章中被告知我可以做的事情 我发现从 make re
  • 是否可以将数据导入Hive表而不复制数据

    我将日志文件以文本形式存储在 HDFS 中 当我将日志文件加载到 Hive 表中时 所有文件都会被复制 我可以避免所有文本数据存储两次吗 编辑 我通过以下命令加载它 LOAD DATA INPATH user logs mylogfile
  • 防止转换 HTML 实体时出现工具提示

  • 组件 props 中的函数参数不兼容

    我有一个组件 它接受一个项目列表 已知有一个 ID 以及一个过滤这些项目的函数 具有 ID 的类型是项目的通用类型 所有项目都将具有 但更具体的项目将包括其他道具 type GenericItem id string type Specif
  • 为什么给字符串添加null没有异常?

    为什么这不抛出异常不明白 obj 为 null object obj null Console WriteLine Hello World obj 这编译为 Console WriteLine String Concat Hello Wor
  • 如何使用CSS仅显示字符串的一部分

    我希望能够显示最多 10 个字符的字符串 如果字符串超过 10 个字符 我想在末尾附加 例如 如果我有字符串 helloworldmynameisryan 我希望它像这样显示 helloworld 我只是在 div 中显示我的字符串 如下所
  • 如何将 IAM 角色添加到 AWS 中的现有实例?

    我想添加一个IAM对现有角色的作用EC2AWS 中的实例 我尝试使用AWS CLI 但是 我找不到办法做到这一点 自 AWS CLI 起v1 11 46 昨天刚刚发布 参见变更日志文件 https github com aws aws cl
  • ASP.NET MVC AntiForgeryToken 和缓存

    我目前正在开发一个 ASP NET MVC 项目 并遇到了一个看起来很奇怪的错误 在 ASP NET MVC 模板表单中 始终会获得 AntiForgeryToken 因此我相信这是最佳实践 然而 AntiForgeryTokens 似乎不