加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 没有表单身份验证的AntiForgeryToken

发布时间:2020-12-16 07:39:36 所属栏目:asp.Net 来源:网络整理
导读:我们有一个使用MVC3的网站和一个完全不依赖于表单身份验证的自定义身份验证方法 – 至少从我能说的方面来说.在web.config中我们设置 authentication mode="None"/authentication 我们永远不会在代码中的任何地方使用/设置HttpContext.User.问题是在某些情况
我们有一个使用MVC3的网站和一个完全不依赖于表单身份验证的自定义身份验证方法 – 至少从我能说的方面来说.在web.config中我们设置

<authentication mode="None"></authentication>

我们永远不会在代码中的任何地方使用/设置HttpContext.User.问题是在某些情况下使用@ Html.AntiForgeryToken()时,用户会收到以下错误消息:

A required anti-forgery token was not supplied or was invalid

我们使用以下代码集中了OnAuthorization中的所有反伪造检查:

if (String.Compare(filterContext.HttpContext.Request.HttpMethod,"post",true) == 0)
{
  var forgery = new ValidateAntiForgeryTokenAttribute();
  forgery.OnAuthorization(filterContext);
}

这就是异常发生的地方.我们有defined a machineKey in web.config来防止在应用程序池回收时生成新密钥.这并没有解决问题.

接下来我们认为客户的浏览器可能没有发送cookie.我们开始记录cookie并注意到在某些情况下会发送RequestVerificationToken_Lw cookie,但在其他情况下则不会 – 尽管其他cookie(如Google Analytics提供的cookie)也会被发送.可能是浏览器中的某些内容正在剥离一些cookie并让其他人进入?

好像是anti-forgery token depends on forms authentication.是这样的吗?任何方式在不以可靠的方式使用表单身份验证时继续使用AntiForgeryToken.请记住,我上面描述的方法适用于超过90%的情况,但我们无法确定为什么它对某些人不起作用.

思考?
谢谢!

解决方法

有些用户是否一直有这个问题?或者只是一些时间?此外,它是否一直适用于某些方法,或者对于相同的操作方法是否不一致?你有没有ajax电话?默认的防伪标记实现不处理AJAX调用.但是你可以编写一些自定义代码来使它工作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读