从非浏览器客户端调用时,使用ValidateAntiForgeryTokenAttribute
属性处理具有WinForm
属性的方法的最佳方法是什么?比如AntiForgery.Validate(token, cookie)
?
根据我所知,以下是防伪的工作方式:
将隐藏的输入字段添加到页面,例如
同样名称的cookie也会发送到客户端
在下一个请求中,cookie和隐藏的输入字段都将发送到服务器。服务器调用HttpClient
以确认请求是合法的。
一切都可以在网络应用中正常使用。它似乎在WinForm中不起作用。这是我的工作:
__RequestVerificationToken
,我会转到包含令牌的页面。 AntiForgery.Validate(xx,yy)
。答案 0 :(得分:3)
我明白了。它需要先进行表单身份验证,然后在后续的WebAPI调用中传递cookie。所以这是修改后的流程:
1)使用HttpWebRequest(GET)
加载登录表单2)使用凭据在登录表单上执行POST。在HttpWebRequest中提供 cookiecontainer
3)cookiecontainer现在包含Auth cookie和 __ RequestVerificationToken
4)从任何后续GET中获取__RequestVerificationToken,甚至从登录结果的输出中获取
5)对于WebAPI Post调用,按原样传递cookiecontainer。还包括标题 __RequestVerificationToken,其中包含来自上一步的值。