>백엔드 개발 >PHP 튜토리얼 >YII2 자동 로그인 쿠키가 항상 만료되는 경우 어떻게 해야 합니까?

YII2 자동 로그인 쿠키가 항상 만료되는 경우 어떻게 해야 합니까?

小云云
小云云원래의
2018-02-10 13:30:291520검색

최근 Yii2 자동 로그인 기능을 사용했는데 Yii2 자동 로그인 구성 기능을 켰는데도 브라우저를 닫은 후 다시 브라우저를 열면 여전히 비로그인 상태인 것을 발견했습니다. , 온라인에서 정보를 검색할 때 기본적으로 유사한 상황은 없습니다. 이 글은 YII2 자동 로그인 쿠키가 항상 실패하는 문제에 대한 해결책을 주로 소개합니다. 이 글이 모든 사람에게 도움이 되기를 바랍니다.

서문

로그인 소스 코드 조회:

protected function sendIdentityCookie($identity, $duration)
{
 $cookie = new Cookie($this->identityCookie);
 $cookie->value = json_encode([
  $identity->getId(),
  $identity->getAuthKey(),
  $duration,
 ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
 $cookie->expire = time() + $duration;
 Yii::$app->getResponse()->getCookies()->add($cookie);
}

쿠키 변수를 인쇄하여 내용에 문제가 없는지 확인하세요. 실행을 위해 코드를 다른 컨트롤러에 복사하는 데 문제가 없습니다.

브라우저를 확인하세요. Yii2에서 설정한 sessionID도 정상입니다. 즉, 여기에서는 쿠키가 성공적으로 설정되지 않았습니다.

시스템과 브라우저에는 문제가 없으므로 전송 과정에 문제가 있습니다.

나중에 마침내 발견한 사실은 $model->login() 로그인 메소드를 호출한 후 json 데이터를 브라우저에 직접 출력하고 그 뒤에 종료 메소드가 있다는 것입니다. 계속 실행 중입니다.

그래서 yii2의 실행은 종료 시 종료되어 헤더 정보가 브라우저로 전송되지 않게 됩니다. 따라서 브라우저는 PHP로부터 쿠키를 설정하라는 명령을 전혀 받지 않습니다.

요약

Yii2나 쿠키 설정이 필요한 컨트롤러에 로그인할 때 절대로 종료하거나 죽지 말고 if else를 사용하여 직접 판단하고 실행을 중단하지 마세요.

관련 권장 사항:

Single Sign-On 쿠키 분석 및 PHP 구현

로그인 쿠키 정보를 저장하는 PHP 시뮬레이션 로그인의 예

php 컬 로그인 쿠키 값 액세스 예

위 내용은 YII2 자동 로그인 쿠키가 항상 만료되는 경우 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.