【问题标题】:Laravel session data is lost after click点击后 Laravel 会话数据丢失
【发布时间】:2016-05-10 11:05:57
【问题描述】:
class FileController extends Controller
{
    public function login()
    {
        /*
         * TODO: Handle via CAS
         * Hardcoded for demo purposes
         */
        Session::put('isLogged', true);
        Session::put('index', "123456");

        return View::make('login');
    }

    public function user()
    {
        if(Session::get('isLogged') == true )
            return View::make('user');
    }
}

我有以下代码。登录时有一个指向 FileControllers@user 的链接。在第二页上,我的会话数据丢失了(Session::all() 为空)。什么可能导致此问题?

【问题讨论】:

  • 尝试切换会话驱动程序(可能是arraydatabase),然后清除配置缓存(php artisan config:clear)。结果如何?
  • 数据存在于FileController@login
  • 你的路由上有web 中间件吗?
  • 在您的app/Http/routes.php 文件中,将您的路线包装在Route::group(['middleware' => 'web'], function () { // });

标签: php laravel laravel-5 session-variables laravel-5.2


【解决方案1】:

尝试使用web 中间件将您的路由(在app/Http/routes.php 内)包装在Route::group() 中:

Route::group(['middleware' => ['web']], function () {
    // My Routes
});

一个简单的测试方法:

Route::group(['middleware' => 'web'], function () {
    Route::get('', function () {
        Session::set('test', 'testing');
    });

    Route::get('other', function () {
        dd(Session::get('test'));
    });
});

如果您删除 Web 中间件,您将收到 null,因为 web 中间件负责启动会话。

确保您的app/Http/Kernel.php 中有web 中间件组:

protected $middlewareGroups = [
    'web' => [
        Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        Middleware\VerifyCsrfToken::class,
    ],
];

【讨论】:

  • 问题仍然存在。
  • 在你的app/Http/Kernel.php里面,有没有中间件组web
  • 奇怪...把你的会话驱动改成file,然后看看你的会话是不是在storage/framework/sessions中创建的。您可能需要清除配置缓存才能使其生效。
  • 奇怪。在我更改为另一个驱动程序之前,我正在使用文件并且会话在那里。现在他们不是了。但是,当我访问 / 时,它会转储正确的数据。什么? (我确实清除了缓存)
  • 是的,这很奇怪。所以它有效吗?如果没有,请尝试清除所有缓存 (route:clear, cache:clear, config:clear)
猜你喜欢
  • 2018-11-25
  • 2014-07-20
  • 1970-01-01
  • 2012-12-16
  • 2014-12-05
  • 2018-01-27
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
相关资源
最近更新 更多