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?