0

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

FormsAuthentication.SetAuthCookie(user.userName, true)

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

HttpContext.Current.User.Identity.IsAuthenticated

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

大多数情况下这对我有用问题是有时在 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

4

1 回答 1

1

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

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

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

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

于 2013-01-28T20:39:47.270 回答