【问题标题】:"Remember Me" not working on server“记住我”无法在服务器上运行
【发布时间】:2012-06-10 13:09:39
【问题描述】:

我正在实现“记住我”功能,我希望用户不必再次输入登录名/密码。

它似乎在本地工作,但在共享主机中,它持续大约 15 分钟然后注销。代码如下:

控制器

FormsAuthentication.SetAuthCookie("username", true);

Web.config

<authentication mode="Forms" >
    <forms loginUrl="~/Account/LogOn" timeout="262974" cookieless="UseCookies" />
</authentication>
<sessionState mode="InProc" timeout="262974" cookieless="UseCookies" />

编辑

我已经添加了 sessionState,但仍然是同样的问题,在本地工作,不在服务器上

我错过了什么?

【问题讨论】:

    标签: c# asp.net-mvc-3 session cookies


    【解决方案1】:

    查看 web.config 中的 sessionstate 元素。例如:

    <sessionState mode="InProc" timeout="60" />
    

    查看以下 SO 问题,了解 web.config 中 sessionstate 元素和 forms 元素之间的区别: Differences in forms auth timeout and session timeout

    @wompaccepted answer 声明如下:

    每次有新用户访问网站时,会话就会开始,无论 无论他们是否匿名。身份验证几乎没有 用 Session 做。

    身份验证超时是身份验证的时间量 cookie 适用于用户的浏览器。一旦cookie过期, 他们必须重新进行身份验证才能访问站点上的受保护资源。

    因此,如果 Session 在 Authentication cookie 之前超时 - 它们是 仍然经过身份验证,但它们的所有会话变量都消失了,并且 如果您不遵守纪律,可能会导致您的网站出现错误 检查缺失带来的空值和其他情况 会话。

    如果 Authentication 在会话之前超时,那么他们的所有会话 变量仍然存在,但它们将无法访问受保护的 资源,直到他们重新登录。

    【讨论】:

    • 感谢您的快速回答,我的 Web.config 中没有此行,我正在测试它!
    • 那个也不行,一定是服务器的配置,在本地的原因,可以正常工作!
    【解决方案2】:

    我终于找到了解决方案,我不得不使用StateServer 而不是InProc 以及一个机器密钥,这是完整的解决方案:

    控制器:

    FormsAuthentication.SetAuthCookie("username", true);
    

    Web.config:

    <authentication mode="Forms" >
        <forms loginUrl="~/Account/LogOn" timeout="262974" cookieless="UseCookies" />
    </authentication>
    
    <sessionState mode="StateServer" timeout="262974" cookieless="UseCookies" />
    
    <machineKey validationKey="5BAE63F50C69C1BBB7BFC2E696674389C307E28E9DEB60FB273B85CAD8FC3C2261FB13DF92B90A99C6EB684FDB1F6E3E92E1A42083EB77B5918126DD52245FB5" decryptionKey="11F6FE0C790413FFF3E230387168016B212216DEF727C4157CDDD0558BEAE5B7" validation="SHA1" decryption="AES" />
    

    我与 Arvixe 有一个共享主机,我在他们的支持中找到了解决方案:support.arvixe.com

    【讨论】:

      【解决方案3】:

      转到:ASP.NET 设置并滚动到会话设置将“值”无更改为“表单”它会完成!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-30
        • 2014-05-04
        • 2010-12-09
        • 1970-01-01
        • 2022-01-21
        • 2015-10-27
        相关资源
        最近更新 更多