Maison  >  Article  >  développement back-end  >  Que dois-je faire si les cookies de connexion automatique de YII2 expirent toujours ?

Que dois-je faire si les cookies de connexion automatique de YII2 expirent toujours ?

小云云
小云云original
2018-02-10 13:30:291470parcourir

J'ai récemment essayé la fonction de connexion automatique de Yii2 et j'ai découvert que même si la fonction de configuration de connexion automatique de Yii2 est activée, une fois le navigateur fermé, il est toujours dans un état de non-connexion lorsque le navigateur est rouvert. , il n’existe fondamentalement aucune situation similaire lors de la recherche d’informations en ligne. Cet article vous présente principalement la solution au problème de l'échec constant du cookie de connexion automatique YII2. J'espère qu'il sera utile à tout le monde.

Avant-propos

Interrogez le code source de connexion :

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);
}

Imprimez la variable du cookie et constatez qu'il n'y a aucun problème avec le contenu. Il n'y a aucun problème à copier le code sur d'autres contrôleurs pour exécution.

Vérifiez le navigateur, l'ID de session défini par Yii2 est également normal, c'est-à-dire que le paramètre de cookie échoue ici.

Comme il n'y a aucun problème avec le système et le navigateur, il y a donc un problème avec le processus de transmission.

Plus tard, j'ai finalement découvert : il s'avère qu'après avoir appelé la méthode de connexion $model->login(), j'envoie directement les données json au navigateur, et il y a une méthode de sortie derrière elle, qui directement empêche le contrôleur de continuer à s'exécuter.

Par conséquent, l'exécution de yii2 se termine à la sortie, ce qui fait que les informations d'en-tête ne sont pas transmises au navigateur. Le navigateur ne reçoit donc pas du tout la commande de PHP pour définir le cookie.

Résumé

Pour la connexion ou le contrôleur Yii2 qui doit définir des cookies, ne quittez jamais ou ne mourez jamais, utilisez if else directement pour juger, n'interrompez pas l'exécution.

Recommandations associées :

Analyse et implémentation des cookies d'authentification unique en PHP

Exemple de connexion simulée PHP enregistrant les informations du cookie de connexion

Exemple d'accès à la valeur du cookie de connexion PHP Curl

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn