2015-01-19 1 views
0

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() 나는 POST /loginAdmin에 할당 된 기능에 $_SESSION을 설정 항상 exit(NULL)한다면, 그래서 세션 할당이 작동하지 않은 것으로 보인다.

그러나 GET /에 할당 된 기능에 $_SESSION을 설정하면 checkAdmin에서 모든 항목을 검색 할 수 있습니다.

기본 세션 저장소가 정상적으로 작동하기 때문에 SessionCookie과 관련된 내용이어야합니다.

어떻게 작동시킬 수 있습니까?

+0

사내 세션 구현을 사용하여 사용하지 마십시오. 프레임 워크 세션 클래스를 사용해야합니다. –

+0

@AdilIlhan Slim은 세션 클래스를 제공하지 않지만 'SessionCookie'를 추가하면 실제로는 원시 세션 동작을 대체합니다. – Melkor

+0

같은 문제가 있습니다. 너는 그것을 해결 했니? –

답변

0

세션 쿠키 미들웨어를 사용하는 경우 기본 PHP 세션을 시작할 필요가 없습니다. $ _SESSION 수퍼 글로벌은 계속 사용할 수 있으며 PHP의 원시 세션 관리가 아닌 미들웨어 계층을 통해 HTTP 쿠키로 지속됩니다.

그렇게 때문에 많은 프레임 워크의 session cookie middleware

+0

무슨 의미입니까? SessionCookie를 추가하면 $ _SESSION에 수행 한 작업이 쿠키 작업으로 변환됩니다. – Melkor

+0

시도해 보았습니다 $ _COOKIE – jsxqf

+0

이제'getCookie()'와'setCookie()'를 사용하려고하는데'setCookie()'다음에'exit()'를 사용하면 쿠키가 발견되지 않습니다. 세트. 무엇 ... – Melkor

관련 문제