我正在尝试将Html.AntiForgeryToken()
添加到MVC3网站的登录表单中。此表单位于网站的每个页面上。我注意到,如果用户在站点上打开多个选项卡,然后返回到旧选项卡并提交登录表单,则其他选项卡上的令牌将变为无效,即使使用salt也是如此。有什么方法可以解决这个问题吗?
这只是一个例子,网站上还有其他表单,用户似乎打开了多个标签页。
答案 0 :(得分:-1)
我们的电子商务网站也有同样的问题。 在我的情况下,用户可以在不登录的情况下把东西放到他的篮子里。但是在没有登录的情况下打开几个选项卡后,用户决定登录并尝试在一个选项卡中登录后添加所有产品,这就是错误所在。
所以我决定在提交表单之前在这个页面上放一个get来获取一个新的AntiForgeryToken。
我创建了一个新的局部视图,其中只有Html.AntiForgeryToekn并在提交表单之前通过AJAX调用它。并将表单上的__RequestVarificationToekn值替换为新值。
我希望这能为您解决问题。
答案 1 :(得分:-2)
您使用FormsAuthentication登录吗?如果是,则在登录时跨多个选项卡共享相同的令牌实例,因此具有现有cookie的所有用户都将遇到麻烦。要解决此问题,请按照此帖提供进一步的帮助