최근 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를 사용하여 직접 판단하고 실행을 중단하지 마세요.
관련 권장 사항:
로그인 쿠키 정보를 저장하는 PHP 시뮬레이션 로그인의 예
위 내용은 YII2 자동 로그인 쿠키가 항상 만료되는 경우 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!