I found that if I use SessionCookie
in slim, $_SESSION
cannot be retrieved globally.
$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()
will always exit(NULL)
if I set $_SESSION
in the function assigned to POST /loginAdmin
, so it seems that the session assignment didn't work.
But if I set $_SESSION
in the function assigned to GET /
, checkAdmin
can retrieve it everywhere.
It must be something related to SessionCookie
because the native session store works fine.
So how can I make it work?