在一个站点上生成AntiForgeryToken并在另一个站点上验证?

时间:2013-09-19 23:54:51

标签: asp.net asp.net-mvc asp.net-mvc-4

如果我有2个ASP.NET MVC站点(可能在单独的服务器上)并且我想在站点A上显示POST到站点B上的操作的表单,是否可以共享AntiForgeryToken设置,以便如果站点A包括在表单上的AntiForgeryToken,它将成功通过站点B上的Anti Forgery验证检查?

因此,在网站A中,该网页的表单的操作设置为Site B Url,其中包含:

@Html.AntiForgeryToken() 

在网站B上,它将发布的动作装饰有:

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]

这里的情况是我们需要允许从站点A上的表单登录站点B.

如果可以的话,我们应该注意其他问题吗?

1 个答案:

答案 0 :(得分:3)

@Html.AntiForgeryToken()助手和[ValidateAntiForgeryToken]属性的全部目的是阻止用户从其他域提交表单。

要做到这一点,防伪令牌使用cookies。由于您无法在多个域中共享Cookie,因此无法在站点B上访问您站点A上创建的Cookie。

因此,我认为你想要实现的目标是不可能的。