最近Yii2の自動ログイン機能を使用したのですが、Yii2の自動ログイン設定機能をオンにしてもブラウザを閉じた後、再度ブラウザを開くと未ログイン状態のままであることが分かりました。 , オンラインで情報を検索する場合、基本的に同様の状況はありません。この記事では、YII2 の自動ログイン Cookie が常に失敗する問題の解決策を主に紹介します。これが皆様のお役に立てば幸いです。
はじめに
ログイン ソース コードをクエリします。
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); }
Cookie 変数を出力し、内容に問題がないことを確認します。コードを他のコントローラーにコピーして実行しても問題ありません。
ブラウザを確認してください。Yii2 によって設定されたセッション ID も正常です。つまり、ここでは Cookie が正常に設定されていないだけです。
システムとブラウザには問題がないので、送信プロセスに問題があります。
後でようやく発見しました: $model->login() ログイン メソッドを呼び出した後、json データをブラウザに直接出力し、その背後に exit メソッドがあり、コントローラーが実行を続けています。
そのため、yii2 の実行は終了時に終了し、ヘッダー情報はブラウザに送信されません。したがって、ブラウザは PHP から Cookie を設定するコマンドをまったく受け取りません。
概要
Yii2 または Cookie を設定する必要があるコントローラーにログインするときは、決して終了したり終了したりせず、if else を使用して直接判断し、実行を中断しないでください。
関連する推奨事項:
PHP でのシングル サインオン Cookie の分析と実装
ログイン Cookie 情報を保存する PHP シミュレートされたログインの例
PHP Curl ログイン Cookie 値へのアクセスの例
以上がYII2 自動ログイン Cookie の有効期限が常に切れる場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。