如何在Laravel中为整个应用程序设置全局会话?

时间:2016-06-19 12:35:04

标签: laravel session global

如何在Laravel中设置全局会话。在普通的PHP脚本中,如果浏览器关闭或调用函数$_SESSION['myvar'] / session_destroy(),则unset()等全局会话将会消失。

我在Laravel中尝试了这个,但它在控制器扩展BaseController中不起作用:

Session::set( 'id', $user->id );
Session::get( 'id' );

我的代码的上下文是:

// ROUTES
Route::get( '/', 'MyController@setSession' );


// CONTROLLER
class MyController extends Controller
{
    public function setSession( )
    {
       // ...
    Session::set( 'id', $user->id );
    return view('access');  
    }
}


// VIEW -> LOST Session
@if (Session::has('id') && Session::get('id') == 'hsdiwe78912hj')
    I have access!
@else
    I must stay here! <!-- I always get this -->
@endif 

3 个答案:

答案 0 :(得分:2)

使用

Session::put('id', $user->id );
Session::get('id' );
Session::forget('id' );

答案 1 :(得分:0)

您似乎没有正确定义$user->id。试试这个:

Session::set( 'id', Auth::id() );

答案 2 :(得分:0)

感谢您的提示!我不知道,Laravel不像PHP那样使用普通的$ _SESSION或session_start。

昨天的提示:必须编辑config / session.php:

'expire_on_close' => true,  // expires when browser is closed