保留 .aspxauth 成员资格 cookie

Persisting .aspxauth membership cookie

我最近将一个网站从一个主机移到了另一个。

在移动之前,表单身份验证正常工作,并且用户在各个会话中保持登录状态。

移动后,用户会在看似随机的一段时间后注销。

我检查了网络流量,.aspxauth cookie 被发送到服务器。

我在本地调试了问题,再次发送了cookie,但是在Request.Cookies中没有出现。 Google 告诉我,这是因为如果 ASP.NET 无法解密 .aspxauth cookie,那么它会偷偷地将它从 Request.Cookies 集合中删除。

谢谢

ASP.NET 无法解密它自己加密的 cookie,这似乎有点可笑,但这确实会发生。

要加密 cookie,ASP.NET 使用 web.config 或 machine.config 中的 MachineKey 设置。不幸的是,这个 "AutoGenerate,IsolateApps" 的默认设置,在这种情况下 ASP.NET 每次应用程序池回收时都会生成一个新值,因此无法读取现有的 cookie。

解决这个问题的方法是在web.config或machine.config中指定一个密钥,有一些在线工具可以生成一个(例如http://www.developerfusion.com/tools/generatemachinekey/) and some offline tools for the more paranoid (http://www.codeproject.com/Articles/16645/ASP-NET-machineKey-Generator

完成后应该如下所示:

<machineKey
validationKey="12365A372...etc...34897"
decryptionKey="A76568...etc...1239847FD"
validation="SHA1" decryption="AES">