2016-08-08 2 views
0

다른 Google 메소드의 변형과 함께 executeGetRequest라는 API를 호출하는 함수가 있습니다. 정적이며 기본 클래스에 있습니다. 컨트롤러에서 호출됩니다. API가 401 HTTP 상태 코드를 반환하면 executeGetRequest는 "프런트 엔드"Yii2 프로젝트의 로그 아웃 페이지로 사용자를 리디렉션하여 날짜가 지난 세션 데이터를 지워야합니다.Yii2 : 정적이 아닌 컨트롤러 컨텍스트에서 리디렉션을 실행하십시오.

동료와 여러 방향으로 리디렉션하려고했습니다. 정적 컨텍스트에서 $ this 객체가 없기 때문에 $ this-> redirect()가 작동하지 않습니다.

return Yii::$app->getResponse()->redirect(Url::to('login/user-logout')); 

이 작동하지 않습니다.

Yii::$app->getResponse()->redirect(Url::to('login/user-logout'))->send(); 
return; 

이 작동하지 않습니다. 우리는 Url :: to()를 사용하거나 사용하지 않고 이들을 시도했습니다.

401 응답을 확인한 조건부에서 Yii :: trace()를 얻을 수있었습니다. 그것은 잘 작동합니다. 문제는 401 상태 코드가 아니라 리디렉션입니다.

답변

1

해야 일이 귀하의 경우에는 작동하지 않는 이유

Yii::$app->response->redirect(['login/user-logout'])->send(); return; 

가능한 원인 :

  1. 이 있었다 아약스/pjax 요청을.
  2. 잘못된 경로와 중복 된 URL :: to()를 사용했습니다.
  3. logout 작업에서 자주 발생하는 POST 요청을 기다리고 있습니다.

401은 아마도 # 3입니다. 동일한 리디렉션 메커니즘을 시도하지만 다른 경로를 가리키거나 user-logout POST 동작의 verb 동작을 제거하여 확인하십시오.

관련 문제