【问题标题】:forms authentication persistent across multiple servers形成跨多个服务器持久的身份验证
【发布时间】:2011-03-30 14:54:20
【问题描述】:

我有一个 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 消失了。我不确定这与应用程序的任一负载平衡服务器上的工作进程有关,因为我可以直接转到其中一个服务器,登录并且我的登录信息保持原样。此外,通过我的发现,我正在设置机器验证密钥这一事实应该可以在工作进程运行时解决问题和重新创建密钥。一定有我想念的东西。如果有人能指出我正确的方向,将不胜感激。

谢谢, 比利

【问题讨论】:

  • 查看服务器事件日志。如果解密 cookie 有问题,它会被记录下来。

标签: asp.net-mvc-2 forms forms-authentication


【解决方案1】:

看起来我没有意识到显而易见的事情。尽管有时关闭浏览器时登录似乎会持续存在,有时在我的 Firefox 浏览器上检查会话结束时使 cookie 过期的设置。做出改变后一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2020-02-05
    • 2014-05-04
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多