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