【问题标题】:Session get destroyed before authTimeout expire in yii2在 yii2 中的 authTimeout 到期之前会话被销毁
【发布时间】:2016-05-19 14:08:44
【问题描述】:

在 Yii2 中,我的 config/main.php 中有

'components' => [
    'user' => [
        'identityClass' => 'common\models\User',
        'authTimeout' => 43200,
        'loginUrl' => null,
    ],
...
]

当我试图在我的整个系统中查看我的 authTimeout 变量时一切正常,除了我的会话在 authTimeout 之前过期。我使用 access_token 进行登录,因为我的前端是有角度的,并且还使用 mdmsoft/yii2-admin 进行登录RBAC。 我没有得到,为什么我在我的 authTimeout 之前注销?
谢谢

【问题讨论】:

    标签: php session yii2-advanced-app yii2-basic-app


    【解决方案1】:

    这可能是因为在全局范围内,session.gc_maxlifetime 设置为低于您在应用程序中设置的值。您可以使用echo ini_get("session.gc_maxlifetime"); 获取当前值。

    This answer 讨论如何在您的应用程序中增加它。请注意,某些主机倾向于覆盖 php.ini 中设置的会话超时值,如this thread 中所述。即使是这样,this answer 也会有所帮助。

    如果不是这样,请提供有关您的脚本、主机和 php 配置的更多信息。我会相应地更新答案。

    【讨论】:

    • 我的 session.gc_maxlifetime 是 1440,这意味着 24 分钟,但我没有在特定时间注销。每次单击某些活动时,我都会运行类似计时器的东西。有时我看到我没有注销4 小时也是 1 小时中的一些时间。我看到我的应用程序中的 authTime 与我在配置中的相同。当我进入我的 yii2soft 内部 web 到 User.php 时,我的持续时间是 216000。如果我看到我的过期时间是浏览器也在 12 小时后。是否有可能像我的每个请求一样,我的 session.gc_maxlifetime 将被添加到我之前的会话中(即 session.gc_maxlifetime)?
    猜你喜欢
    • 2012-10-20
    • 2014-01-22
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多