Nous rencontrons parfois un délai d'expiration après la connexion de l'utilisateur, et les utilisateurs doivent se reconnecter après un délai d'attente. Cet article vous présente principalement les principes et les méthodes de reconnexion dans Laravel 5.4 pour accéder à la page de pré-connexion, j'espère. ça peut aider tout le monde.
1. Scénarios d'application :
Il y a un délai d'expiration après la connexion de l'utilisateur, et l'utilisateur doit se reconnecter après le délai d'expiration. Exemple : lorsque l'utilisateur est sur la page /user/2 et que la page de connexion expire, l'utilisateur sera redirigé vers la page de connexion. Après s'être connecté, l'utilisateur doit toujours être sur /user/2 au lieu de home/index.
2. Principe de mise en œuvre
Après avoir déterminé que l'utilisateur a expiré, stockez l'adresse URL actuelle de l'utilisateur dans la session et accédez à cette adresse URL après la prochaine connexion.
3. Implémentation spécifique dans Laravel
Middleware de routage (détermination du statut de connexion) Ici, le statut de connexion de l'utilisateur est déterminé en fonction de l'expiration du cookie. et l'exécution, et ne fait rien de redondant. Fonctionnement (j'utilise la valeur du cookie $token comme stockage de la clé de session lors de la connexion), le code est le suivant :
public function handle($request, Closure $next) { //判断cookie是否存在 if ($token = Cookie::get('token')) { //判断session信息,保持状态一致 if ($request->session()->get($token)) { return $next($request); } } //获取当前url,跳转到登陆页 $returnUrl = urlencode($request->getRequestUri()); return redirect('/login?reurl=' . $returnUrl); }
Côté connexion ( traitement de l'interaction avec la page et logique de saut) Ce qui est fait ici est de sauter Aller à la page de connexion Cela peut être implémenté dans le middleware Seule cette phrase, avec des implémentations flashant la reurl pour une utilisation frontale.
return redirect('/')->with('reurl', $returnUrl);
Côté page (pour déterminer les informations sur la mémoire flash) Pour déterminer les informations sur la mémoire flash, il y a des connexions ajax et de soumission. Il devrait y avoir très peu de soumissions. puis connectez-vous au backend pour déterminer la réurl.
@if (session('reurl')) <input type="hidden" name="reurl" value="{{ session('reurl') }}"/> @endif
La connexion (logique de connexion) omet la logique de détermination du mot de passe du compte utilisateur et de stockage des cookies et des sessions. Enfin, le front-end obtient l'url, location.href = 'url', et accède à l'adresse URL d'origine.
$reurl = $request->get('reurl'); $url = empty($reurl) ? '/home/index' : $reurl; return response($url);
Remarque : cet article publie uniquement le code pertinent pour mettre en œuvre la reconnexion. Veuillez modifier le code réel en fonction de l'entreprise réelle.
Recommandations associées :
thinkphp a toujours un problème pour accéder à la page de pré-connexion après la connexion
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!