【发布时间】:2014-04-02 10:40:56
【问题描述】:
我正在为我的会话使用“文件存储”。当我运行这个时:
Session::set('awesomekey', 'myVal123');
刷新页面,我可以看到每次都在 /storage/session 中创建新文件。我认为它每次都会更新同一个文件。这基本上意味着会话根本不起作用。换句话说,如果它不断地重新创建会话文件,这永远不会奏效:
Session::get('awesomekey');
或者至少,它返回一个空白。我错过了什么可能导致每次加载页面时都创建新的会话密钥?
更新
经过进一步调查,似乎每次加载页面时都会重新生成 cookie。可能是什么原因造成的?
我还没有考虑登录,所以这些信息对我来说毫无用处 --> http://willworkforbanjos.com/2014/02/laravel-sessions-not-working-in-4-1/
当我简单地将上述设置并在 master.blade.php 文件中获取代码时,我的问题正在发生。它应该设置它,存储信息,并在下一次重新加载时从会话中获取正确的信息。但它不能,因为在重新加载时它会将 cookie 更改为其他代码。
有人知道为什么会这样吗?
更新 2
- 向 session.php 添加:'lifetime' => 120 无效。 (@Sheikh Heera)
- 仅将代码放在控制器中,不起作用。 (@Phill Sparks)
- 我尝试了 chrome 和 firefox,结果相同 (@The Shift Exchange)
只是为了清楚我想要做什么。我在 HomeController.php 中添加以下代码:
public function index()
{
Session::put('awesomekey', 'myVal123');
return View::make('home.index');
}
然后我把它放在我的 master.blade.php 中:
print Session::get('awesomekey');
除此之外,我的代码控制器端没有包含任何“死”或随机回声。当我第一次打开文件时,我可以看到 myVal123 被打印出来。
然后我在控制器中取出这部分:
Session::put('awesomekey', 'myVal123');
然后重新加载页面。现在它什么也不打印了。我可以在浏览器中看到 cookie 已更改。生成一个新的 cookie 将丢失对会话的引用,所以我一直试图理解为什么每次都这样做,即使它在第一次加载时保存了会话。
还有什么想法吗?
更新 3
我也试过了:
- 运行“php artisan dump-autoload”...仍然不起作用
- 我去了这里:http://www.whatismybrowser.com/are-cookies-enabled ... 是的,cookie 已启用。
我真的没办法了……
更新 4
-
我去了 SessionManager.php,就在下面:
$lifetime = $this->app['config']['session.lifetime'];
我打印出了生命时间的价值:
print $lifetime; die();
而且这个代码在页面重新加载时从来没有命中过?!但是,将其添加到我的控制器中:
$d = Config::get('session.lifetime');
print $d;
实际上打印出我一生的价值.... :(
【问题讨论】:
-
尝试使用会话闪存,它只会对下一个请求有效,除非您重新刷新它
-
您能详细说明一下吗?我的问题是我的 cookie 正在重新生成,我需要了解原因?
-
能贴出更多相关代码吗?
-
您是否尝试从控制器而不是视图存储会话中的内容?
-
你修好了吗?我有同样的问题。在本地运行良好,但在服务器上运行良好。请指教。