我正在为我的会话使用"文件存储".当我运行这个:
Session::set('awesomekey', 'myVal123');
并刷新页面,我可以看到每次在/ storage/session中创建的新文件.我以为它每次都会更新同一个文件.这基本上意味着会话根本不起作用.换句话说,如果它不断重新创建会话文件,这永远不会起作用:
Session::get('awesomekey');
或者至少,它返回一个空白.我错过了什么可能导致每次加载页面时都会创建一个新的会话密钥?
UPDATE
在进一步调查中,似乎在每次页面加载时重新生成cookie.可能导致什么?
我甚至都没有看着登录,所以这些信息对我来说毫无用处 - > http://willworkforbanjos.com/2014/02/laravel-sessions-not-working-in-4-1/
当我简单地将上面的set和get代码放在master.blade.php文件中时,我的问题就出现了.它应该设置它,存储信息,并在下次重新加载时从会话中获取正确的信息.但它不能,因为在重新加载时它将cookie更改为其他一些代码.
任何人都知道为什么会这样吗?
更新2
添加:'lifetime'=> 120到session.php不起作用.(@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');
我没有在代码的控制器端包含任何"die"或随机回声,除此之外.当我第一次打开文件时,我可以看到myVal123被打印出来.
然后我在控制器中取出这部分:
Session::put('awesomekey', 'myVal123');
并重新加载页面.它现在什么都不打印.我可以在浏览器中看到cookie已更改.生成一个新的cookie将失去对会话的引用,所以我不知道每次都在理解它为什么这样做,即使它在第一次加载时保存了会话.
还有什么想法吗?
更新3
我也尝试过:
运行"php artisan dump-autoload"...仍然无效
我去了这里:http://www.whatismybrowser.com/are-cookies-enabled ...是的,启用了cookies.
我真的在这里没有想法......
更新4
我去了SessionManager.php,就在这下面:
$ lifetime = $ this-> app ['config'] ['session.lifetime'];
我打印出了终身价值:
print $lifetime; die();
这个代码从未在页面重新加载时被点击?!但是,在我的控制器中添加:
$d = Config::get('session.lifetime'); print $d;
事实上,打印出我的终身价值.... :(