2017-12-01 1 views
0

슬림 플래시를 사용하여 플래시 메시지를 표시하는 Slim 3 응용 프로그램에서 작업하고 있습니다. 정상적인 설정으로 모든 테스트가 정상적으로 작동합니다. 그러나 로그인이나 가입과 같은 보호 된 페이지에 들어가거나 나갈 때 HTTPS (그리고 HTTP로 돌아 가기)로 이동하기 위해 애플리케이션에 미들웨어를 추가했습니다.Slim에서 리디렉션으로 인해 플래시 메시지가 표시되지 않습니다.

가입 페이지 (HTTPS)를 떠나 홈 페이지 (HTTP)로 리디렉션하면 계정이 성공적으로 생성되었다는 내용의 플래시 메시지가 표시되지 않습니다. 미들웨어를 사용하지 않으려 고 노력했습니다 (HTTP 페이지 사이에서만 작동합니다).

if($request->getUri()->getScheme() === 'https' && !in_array($request->getUri()->getPath(), self::SSL_REQUIRED_PATHS)){ 
$response = $response->withStatus(302)->withHeader('Location', 'http://' . $request->getUri()->getHost() . $request->getUri()->getBasePath() . '/' . $request->getUri()->getPath()); 

} 

분명히 상태로 응답 플래시 메시지가 분실 원인이된다

내가 미들웨어에서 사용하고 코드입니다. 플래시 메시지를 저장하고 HTTPS에서 HTTP로 다시 이동 한 후 표시 할 수 있습니까?

감사합니다.

당신이 아마 같은 무언가를 당신의 미들웨어 리디렉션 플래시 메시지 verificiation을 추가하고 다음 요청에 대한 메시지를 저장할 수 있습니다
+1

유무에 사용 HTTPS를 추천합니다 모든 페이지에 대해 https를 사용하도록 설정 했습니까? 요즘 대부분의 조직에서 사용하는 경로입니다. – commanderZiltoid

+0

@commanderZiltoid가 말한 것을 2 등하고 싶습니다. 어디에서나 HTTPS를 사용하지 않으면 사이트가 안전하지 않습니다. 로그인 페이지에서만이 암호를 사용하면 암호가 일반 텍스트로 보내지는 것을 막을 수 있지만 HTTPS가 아닌 페이지에 대한 이후 요청에서는 세션이 여전히 도용 될 수 있습니다. – jfadich

+0

전 사이트에서 https를 사용하도록 설정했습니다. 감사! – cesarcarlos

답변

0

:

if ($request->getUri()->getScheme() === 'https' && 
    !in_array($request->getUri()->getPath(), self::SSL_REQUIRED_PATHS) 
    ) { 
    $messagesFlash = $app->flash->getMessages(); 

    if ($messagesFlash) { 
     array_map(function($k, $v) use ($app) { 
      $app->flash->addMessage($k, $v); 
     }, array_keys($messagesFlash), $messagesFlash); 
    } 

    $location = sprintf('http://%s%s/%s' 
     $request->getUri()->getHost(), 
     $request->getUri()->getBasePath(), 
     $request->getUri()->getPath() 
    ); 

    $response = $response->withStatus(302)->withHeader('Location', $location); 

} 

그러나 나는 당신의 전체 웹 사이트

관련 문제