我有一个MVC 2.0应用程序需要使用在两个服务器之间进行负载平衡的表单身份验证进行持久登录(如果选择)。
我的webconfig(在两台服务器上)看起来像这样:
<authentication mode="Forms">
<forms name="MA_AuthCookie" loginUrl="~/Account/LogOn" timeout="86400" protection="All" path="/" slidingExpiration="false"/>
</authentication>
<machineKey validationKey="*************180C6E1FD3E9338B78ACD83CA0A99F27B985AF97871BDBA43E1426DB8FA82F811779BFB779D1E90EB9BCCDE71D3F0458392736B17D3"
decryptionKey="*****************D72F47EF06B1F594CAAF1BEA311555A9D8E8"
validation="SHA1"
decryption="AES" />
超时设置为60天,我使用以下脚本在登录时设置cookie。
FormsAuthentication.SetAuthCookie(userName, true);
所有工作都很好或者似乎在两台服务器之间似乎都是这样,直到我一小时左右回来没有任何活动,我的auth cookie就消失了。我不确定这与应用程序的负载平衡服务器上的工作进程有关,因为我可以直接访问其中一个服务器,登录并且我的登录应该保持原样。此外,通过我的发现,我正在设置机器验证密钥的事实应该绕过工作进程运行时的密钥问题和重新创建。必须有我缺少的东西。如果有人能指出我正确的方向,那将非常感激。
谢谢, 比利
答案 0 :(得分:0)
看起来我没有意识到这一点。虽然有时在关闭浏览器时登录会持续存在,但有时在我的firefox浏览器上检查会话结束时没有设置过期cookie。做出改变后一切都很好。