我遇到了一个不会持久的会话问题。
在控制器中,我有一个加载文章进行编辑的功能
public function getEdit($id)
{
try {
$news = News::findOrFail($id);
View::share('title', Lang::get('admin.editNews').": ".$news->title);
View::share('news', $news);
$this->layout->content = View::make('news.editNews');
} catch (Exception $e) {
Session::flash('message', Lang::get('admin.noSuchNews'));
Session::flash('notif', 'danger');
return Redirect::to("news");
}
}
我还有另一个函数 - 索引,它应该显示这些flash消息。
public function getIndex()
{
var_dump(Session::get('message'));
}
会话不会持续存在。不使用Session::flash
,不使用Session::put
。
Session::get('message')
只是null
。
我想我应该提一下,我做了这样的应用程序路由:
Route::controller('news', 'NewsController');
答案 0 :(得分:5)
检查控制器中Session的功能设置的返回状态。确保即使它是一个简单的null也会返回一些东西。
我刚刚遇到了同样的问题,这解决了它。我能够使用以下内容:
Route::get('session', function (){
Session::put('current_user', 'Lionel Morrison');
Session::put('user_id', '12345');
var_dump(Session::all());
});
Route::get('get', function () {
var_dump(Session::all());
});
但是当我在控制器中使用它时,它在我返回null之前没有工作;
public function setsession() {
Session::put('cat', 'Tom');
Session::put('mouse', 'Jerry');
return null;
}
public function getsession() {
dd(Session::all());
}
答案 1 :(得分:3)
好的,我已修好了。
事情是,我已将session.php
文件放入此
'domain' => '.mydomain.com',
但是由于app仍然在localhost中,即使我没有使用cookie
作为我的Session驱动程序,所有会话都失败了。
当我将其更改为
时'domain' => '',
一切都开始了
答案 2 :(得分:2)
如果您发现会话未正确保存,请尝试明确调用Session::save()
以强制保存。
答案 3 :(得分:0)
您可能需要查看http://laravel.com/docs/session#session-drivers中描述的会话设置。
最简单的方法是使用Cookie进行会话(并确保在您的浏览器中启用了Cookie)。
如果您使用file
存储会话,请确保app/config/session.php
中定义的存储路径是可写的。
答案 4 :(得分:0)
如果您尝试使用“Auth :: loginUsingId()”api而不是“Auth :: attempt()”api进行登录,则会破坏另一个请求的会话。所以我建议你使用“cookie”驱动程序而不是session.php的“file”(config \ session.php \ driver)
答案 5 :(得分:0)
for laravel 4.2
转到app / config目录
编辑app.php
'url' => 'localhost',
编辑session.php
'driver' => 'file',
'cookie' => 'sitename_session',
'domain' => null,
'secure' => false,