【问题标题】:Authentication cookie not working after aplication pool reloads应用程序池重新加载后身份验证 cookie 不起作用
【发布时间】:2013-01-28 20:23:57
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案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

    【讨论】:

    • 谢谢!无数小时后,你的答案是正确的。如何将此标记为正确答案?
    • 我很高兴它有帮助!这个答案的左侧应该有一个小检查按钮来接受答案。查看stackoverflow.com/faq#howtoask 上的 Stackoverflow 指南,了解如何接受/支持答案。
    猜你喜欢
    • 2020-06-20
    • 2021-12-19
    • 2017-05-05
    • 2017-10-18
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2017-12-19
    相关资源
    最近更新 更多