在苗条框架中使用`SessionCookie`时$ _SESSION不是全局的?

时间:2015-01-19 09:37:48

标签: php session session-cookies slim

我发现如果我在苗条中使用SessionCookie,则无法全局检索$_SESSION

$app->add(new \Slim\Middleware\SessionCookie());

function checkAdmin() {
    if ( ! isset($_SESSION['admin']) || $_SESSION['admin'] !== TRUE) {
        exit(NULL);
    }
}

$app->get('/.*', function() use($app) {
    // function checkAdmin() can retrieve the session value I set here
    $_SESSION['admin'] = TRUE;
    $app->render('index.php');
});

$app->post('/loginAdmin', function() use($app) {
    // function checkAdmin() can NOT retrieve the session value I set here
    $_SESSION['admin'] = TRUE;
    exit(TRUE);
});

$app->post('/getAllUsers', 'checkAdmin', function() use($app) {
    // Not related.
});
如果我在分配给checkAdmin()的函数中设置exit(NULL)

$_SESSION将永远POST /loginAdmin,因此似乎会话分配无效。

但如果我在分配给$_SESSION的函数中设置GET /checkAdmin可以在任何地方检索它。

它必须与SessionCookie相关,因为本机会话存储工作正常。

那我怎样才能让它发挥作用呢?

1 个答案:

答案 0 :(得分:0)

  

如果您使用会话cookie中间件,则不需要启动本机PHP会话。 $ _SESSION超全局仍然可用,它将通过中间件层而不是PHP的本机会话管理持久存储到HTTP cookie中。

所以不要使用session cookie middleware