session - Laravel 4.1 session 变量被随机遗忘

我在 Apache 上使用 Laravel 4.1 应用程序,在我的本地开发机器上一切正常,但在我的暂存机器(位于共享主机上)上,用户随机注销并提示输入他们的凭据再次。

相关设置:

应用程序/配置/session.php:

<?php
return array(
    'driver' => 'file',
    'lifetime' => 120,
    'expire_on_close' => true,
    'files' => storage_path().'/sessions',
    'connection' => null,
    'table' => 'sessions',
    'lottery' => array(2, 100),
    'cookie' => 'laravel_session',
    'path' => '/',
    'domain' => null,
    'secure' => false,
);
  • 使用 Laravel 的默认身份验证驱动程序
  • php.ini:
    • gc_maxlifetime=1440
    • gc_probability=1
    • gc_divisor=100

这似乎与其他一些人遇到的问题不同here . session 文件没有被 php 清除。只有少数 session 变量被随机删除。

tail -F'd session 文件并且可以看到变量何时在一个请求和下一个请求之间被丢弃。之前看起来像这样(经过格式化以便于阅读):

a:4:{
    s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}
    s:6:"_token";s:40:"hvuw9VWWjssSwUL2C5eVSn0qZ2g1cwVF5YCEsLG7";
    s:38:"login_82e5d2c56bdd0811318f0cf078b78bfc";i:2;
    s:9:"_sf2_meta";a:3:{s:1:"u";i:1399318721;s:1:"c";i:1399318011;s:1:"l";s:1:"0";}}

及之后:

a:3:{
    s:6:"_token";s:40:"7o3b6NhiuDKXq4ftvngUefqe6cWybX1tzPEcDaxk";
    s:9:"_sf2_meta";a:3:{s:1:"u";i:1399318721;s:1:"c";i:1399318721;s:1:"l";s:1:"0";}
    s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}

login_ session 消失了,这导致 Laravel 的 Session 类假设用户未通过身份验证。不过,我不确定为什么要删除此 session 变量。据我所知,在登录 session 变量上没有调用 Session::forget、::clear()、::remove() 或::invalidate()。

我还注意到 _token 变量在请求之间保持不变,直到出现问题为止,此时它会发生变化,正如您在上面看到的那样。

知道这里发生了什么吗?

最佳答案

切换到数据库 session 管理器似乎已经解决了问题。我怀疑我的主机服务器配置中有某种方法导致 php 清除了 session 文件。

关于session - Laravel 4.1 session 变量被随机遗忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482870/

相关文章:

asp.net-web-api - 当 WebApi 序列化失败时,我希望异常冒泡而不是 null

r - 警告 : replacing previous import ‘head’ when loa

.net - 每个文件只执行一个类

ios - 解码Code128条码?

sql - 在 NLTK 中将英语转换为 SQL

php - Laravel:模型内验证。多重验证规则

macos - 通过 XPC 与应用程序通信并启动以 root 身份运行的守护进程

jquery - Select2 无限滚动组

xml - 使用 XSLT 转换在 WordProcessingML 中保留换行符和空格

python - 用python编写的鼠标运动跟踪程序