2011-03-30 17 views
0

我有一个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); 

所有的伟大工程,或因此它似乎在这两个服务器,直到我回来一小时左右后没有活动,我的身份验证cookie将消失。我不确定这是否与应用程序的负载平衡服务器上的工作进程有关,因为我可以直接访问其中一台服务器,登录并且我的登录按原样保持不变。另外,通过我的发现,我设置机器验证密钥的事实应该是在工作进程运行时解决密钥的问题和重新创建。必须有我缺少的东西。如果任何人都可以指出我正确的方向,它将非常感激。

感谢, 比利

+0

看看服务器事件日志。如果解密cookie存在问题,它将被记录。 – 2011-03-31 06:22:01

回答

0

看起来像我未能实现明显。尽管有时在关闭浏览器时登录仍然存在,有时甚至没有在会话结束时过期cookies的设置在我的Firefox浏览器中检查。做出这些改变后一切都很好。