2013-07-22 2 views
0

나는 내가 일하는 회사 인 웹 애플리케이션을 대체 할 건물을 짓고있다. 그것은 CakePHP 1.3을 사용하여 만들어졌으며 Symfony 2를 사용하여 처음부터 다시 작성하고 있습니다.이 두 시스템은 Symfony 2로 이전되고 다양한 CakePHP 응용 프로그램에서 제거 된 다양한 기능과 나란히 실행될 것입니다.Symfony 2를 사용하여 쿠키를 읽는 방법?

로그인 정보와의 혼동을 피하기 위해 CakePHP를 완전히 끌 수 있고 Symfony 2의 보안에 의존 할 때까지 CakePHP가 사물의 사용자 로그인을 처리하도록합니다. 그 동안 CakePHP 애플리케이션은 사용자 ID가 포함 된 쿠키를 생성합니다. Symfony에이 쿠키를 초보적인 형태의 보안으로 사용하고 싶습니다.

그러나 Symfony가 생성 된 쿠키를 읽거나로드 할 수 없습니다. 파이어 버그를 사용

public function securitytestAction() 
{ 

    $request = $this->getRequest($_COOKIE); 
    $cookie = $request->headers->getCookies('CakeCookie[passport]'); 

    print_r($cookie); 

    return $this->render('InstructorBundle:Default:test.html.twig'); 
} 

, CakePHP의가 로그인시 발생 쿠키는 'CakeCookie [여권]'이름 : 여기 내 코드입니다. 암호화되지도 않았습니다.

내가 오류는 이것이다 :

FatalErrorException: Error: Call to undefined method Symfony\Component\HttpFoundation\HeaderBag::getCookies() in DefaultController.php line 713

나는이 작업을 얻기 위해 무엇을 할 수 있을까?

편집
Cheesemacfly를 교체 제안했다 :

$request = $this->getRequest($_COOKIE); 
$cookie = $request->headers->getCookies(); 

을 함께 그냥이 :

$request = $this->getRequest()->cookies->all(); 

나는 다음과 같은 응답을 얻을 :

Array ([PHPSESSID] => gptbmh61mfkqn6p86d3suhnt13)

내가 CakePHP는이 쿠키를 생성하는 데 사용되는 코드를 찾고 있었고,이 쿠키에 대한 도메인을 제공하지 않은 2
편집 할 수 있습니다. 이제는 도메인이 .domain.org이되도록 고정하여 하위 도메인에서도 액세스 할 수 있도록했습니다.

이제 Firebug를 사용하는 Symfony2 응용 프로그램으로 이동하면 다른 두 개의 CakePHP 세션 쿠키 (나와는 필요 없음)와 함께 나열된 쿠키를 볼 수 있습니다. 3 개의 CakePHP 도메인은 서브 도메인 new.domain.org을 볼 때도 모두 www.domain.org을 사용하지만 symfony2가 사용하는 하나의 쿠키는 new.domain.org .Symfony2라는 도메인 이름을 표시하지만 원하는 쿠키는로드하지 않습니다.

+0

매개 변수없이'$ request-> headers-> getCookies()'를 호출하면 어떻게 될까요? – cheesemacfly

+0

나는 @cheesemacfly와 같은 오류를 얻었고, 나는 그 질문을 그에 따라 바꿀 것이다. – mickburkejnr

+0

'$ this-> getRequest() -> cookies-> all()'을 사용하는 것은 어떻습니까? 아니면'$ this-> getRequest() -> cookies-> get ('CakeCookie [여권]')? – cheesemacfly

답변

1

친구에게 도움을 받아 알아 냈습니다.

기본적으로 CakePHP에 설정된 쿠키에는 경로가 포함되지 않았습니다. 이를 방지하기 위해, 나는 다음과 같은 PHP 코드를 추가 : 다음 이전 편집의 코드를 변경하지 않고, Symfony2를 확인

$value = $someone['User']['id']; 
setcookie("passport", $value, time()+1200, "/", ".domain.org"); 

, 그리고 Symfony2는 쿠키를 선택할 수 있습니다.

도움을 주신 모든 분들께 감사드립니다.

0

요청이있을 때마다 Symfony2는 기본적으로 Twig 및 PHP 템플릿 엔진에서 전역 템플릿 변수 앱을 설정합니다.

app.security - The security context. 
app.user - The current user object. 
app.request - The request object. 
app.session - The session object. 
app.environment - The current environment (dev, prod, etc). 
app.debug - True if in debug mode. False otherwise. 

예 : 을 나뭇 가지에서 : 응용 변수가 일부 자동으로 응용 프로그램 특정 변수에 대한 액세스를 제공하는 GlobalVariables 인스턴스입니다 {{app.request.method}} PHP에서 : 에코 $ APP-> {{app.user.username}} 세션 객체의 경우 : {{app.session.varname}} PHP에서 :// 난 getGet 전화하는 법 알아?

관련 문제