2017-11-24 1 views
2

CakePHP 3.5를 사용하고 있으며 사용하려는 두 가지 메소드가 사용되지 않으며 대안을 찾을 수 없습니다.CakePHP 응답 중지 권장하지 않음

방법 :

$this->response->send(); 
$this->response->stop(); 

내가 다른 페이지로 리디렉션하고 현재 메소드의 실행을 중지합니다. 리다이렉트 후 die()으로 전화를 시도했지만 작동하지 않습니다.

migration guide에 따르면,이 방법은 쓸모 없게되었다.

의견이 있으십니까?

편집 :

나는 특정 페이지에 액세스하지 않고 사용자를 리디렉션하려고 해요. 이것은 컨트롤러의 initialize() 메소드에 있습니다.

if ($allowedAccess) { 
    $this->Flash->error("Insufficient rights to access that location"); 
    $this->redirect($this->referer()); 
    // FIXME - find alternative to deprecated methods 
    return $this->response; 
    $this->response->send(); 
    $this->response->stop(); 
} 
+0

왜 케이크와 함께 제공되는 인증 시스템을 사용하지 않습니까? 자동으로 리디렉션과 플래시가 실행됩니다. 이 페이지를 읽으십시오 : https://book.cakephp.org/3.0/en/controllers/components/authentication.html 아, 다음 번에 질문 할 때 질문에 전체 코드를 추가하십시오. 이것은 이제 다른 상황이기 때문에 ... – burzum

+0

LDAP를 사용하고 있고 사용자가 적절한 그룹에 있는지 확인하기 때문입니다. – Eric

+0

LDAP는 케이크의 인증 시스템과 함께 작동 할 수 있습니다. 사용할 수있는 3.x 용 플러그인이 적어도 두 개 있으며 CakePHP 3.5 이상에서 작동했던 새로운 인증 레이어는 LDAP 지원을 즉시 사용할 수 있습니다. https://github.com/cakephp/authentication/blob/master/docs /Identifiers.md#ldap 자신의 구현을 선호하는 경우 auth 시스템 용 어댑터로이를 구현해야합니다. – burzum

답변

1

컨트롤러에서 사용해 보셨습니까? 단순히 당신의 컨트롤러 방법에서 응답 객체를 반환 :

public function index() { 
    // Some code 
    return $this->response; 
} 

전송()를 그냥 래퍼 주위 exit() phps했다. 어딘가에 있어야하는 경우 exit()를 사용하십시오.

응답을 반환 할 때 ActionDispatcher이 반환 값을 처리하고 응답 개체 인 경우 발생합니다. __invoke() 방법을 참조하십시오.

응답은 the middleware layer이고 마지막으로 ResponseEmitter으로 전송되며 Server에 의해 사용됩니다. Webroot/index.php에서 확인하십시오 :

// Bind your application to the server. 
$server = new Server(new Application(dirname(__DIR__) . '/config')); 
// Run the request/response through the application 
// and emit the response. 
$server->emit($server->run()); 
+0

이 제안은 저를 위해 작동하지 않습니다. 내 원래 게시물에 더 많은 내용을 추가했습니다. – Eric