应用程序池重新加载后,身份验证cookie无法运行

时间:2013-01-28 20:23:58

标签: asp.net forms-authentication

我在我的网站中使用基于表单的身份验证 在我的登录页面中,我有:

FormsAuthentication.SetAuthCookie(user.userName, true)

当我想检查用户是否经过身份验证时,我会这样做:

HttpContext.Current.User.Identity.IsAuthenticated

我没有使用Asp.net会员,而是使用我的SQL-DB验证 我必须使用Asp.net会员资格吗?

这在大多数时候对我有用 问题是有时在5小时后或30小时后的事情 应用程序池由于某种原因重新启动(我在共享服务器上) 之后,“User.Identity.IsAuthenticated”每次都返回false,直到用户再次登录。

这对我来说很奇怪,因为我可以看到客户端仍然有持久的authCookie 所以为什么用户未经过身份验证?

我的Web.Config参考:

<authentication mode="Forms">
<forms
name="AuthCookie"
loginUrl="~/mySite/ManageLogin.aspx"
timeout="5256000"/>
</authentication>

任何帮助将不胜感激。

我的网站www.mentallica.co.il

1 个答案:

答案 0 :(得分:1)

这可能是由于在应用程序启动时自动生成machinekey。您可以通过在web.config中为您的应用指定机器密钥来阻止这种情况:

<machineKey
    validationKey="410E4E2B06BE457709F2D8C72BB02957A3B4E8BA327F3A6103696857AD3A88598D454489B9D4CAAFC2D5E35E8795B311EE2E94DAA485FD64D7184272A4AE4D8B"
    decryptionKey="EFAFA0917D0D8F137F05B26AE053397C48D34DE688E73483D15C8EDAF0D6FD4F"
    validation="SHA1"
    decryption="AES" /> 

你不应该使用这个 - 你可以在http://aspnetresources.com/tools/machineKey轻松创建自己的。

有关machinekeys的更多信息:http://msdn.microsoft.com/en-us/library/ff649308.aspx