在开发服务器上,带有 Html.AntiForgeryToken() 的标准 MVC4 / EF4.5 登录表单会在每次页面加载时刷新其值。在 IIS 上部署相同代码时,隐藏值 __RequestVerificationToken 始终相同(至少在一个浏览器会话中)。同一服务器上的其他类似应用程序似乎没有这种行为。
哪个 web.config/IIS 参数可能对此负责?
已经尝试设置机器密钥(单服务器),但这似乎只是缩短了令牌,刷新问题仍然存在。
也在不同的浏览器中进行了测试。以下是 IIS 和开发服务器的一些演示值:
IIS:
在 web.config 中没有机器密钥:
BGxqV7DjpHomi22By0r70WebHiWMV2OcsrCMN-dNDkRElZrv6BMQH23_zK9abmRsty_n1NImH2-gEsi3nBrWIQ2
使用 web.config 中的机器密钥:
dXBdht7mn2plT2rPvv0HzWtFvn-N9MT6xzW_xc8dVqnLdofzrL5v0SZFMAFPTANR0
卡西尼/发展:
在 web.config 中没有机器密钥:
Yedkrxms9oYmHGzhV93qsrryVuNKZSWKBwCkP-RzK-tAZGgQ6J5g6Yp0LsCQPehucVwDcUs5lfRUf6Y6FxYUqY0olkE3-PmtF0ZnrCcbXD6XuA1PgPoFchreTPnCCSCwsh3E3FPmdKPlabyOfqiykkVqocxzYBMqd7A3bCZIxU01
使用 web.config 中的机器密钥:
iFjqi1OYplYfhCYdflAw1LSncVwK3b1yfDaJRgfrqVamucJ992D3-pFD__RolMZ_edp6muXQWLkxGOQp5Wn2ObTKXltO2J9tq32-JUMGu7cXdYZMkty3MRwuE-SuIFt7zo7TvQ2