Comment résoudre le problème courant de l'expiration du délai de connexion à Laravel
Lorsque vous utilisez Laravel pour développer des applications Web, l'authentification de connexion est une fonction très importante. Cependant, parfois, si un utilisateur ne fonctionne pas pendant une longue période après s'être connecté, la page peut se déconnecter automatiquement ou l'authentification peut échouer. Ce problème est relativement courant. Ce qui suit présente comment résoudre ce problème en définissant l'heure de la session et fournit des exemples de code spécifiques.
Dans Laravel, le délai d'expiration de la session est de 2 heures par défaut. Vous pouvez définir le délai d'expiration de la session en modifiant l'option lifetime
dans le fichier config/session.php
. Par exemple, définissez l'heure d'expiration de la session sur 1 jour : config/session.php
文件中的lifetime
选项来设置session的过期时间。例如,将session过期时间设置为1天:
'lifetime' => 1440
除了设置session的过期时间外,还可以使用Laravel提供的"remember me"功能来延长登录状态的有效期。当用户勾选"记住我"选项时,会生成一个长期有效的token,使用户在长时间不操作时仍能保持登录状态。在登录认证时,可以通过Auth::attempt()
方法来设置remember me:
if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) { // 登录成功 }
另一种解决方案是定时刷新session,即在用户每次操作或访问页面时,更新session的最后活动时间,从而延长session的过期时间。可以通过中间件来实现这一功能。首先创建一个名为RefreshUserActivity
的中间件:
php artisan make:middleware RefreshUserActivity
然后在中间件中更新session的最后活动时间:
public function handle($request, Closure $next) { if (Auth::check()) { Auth::user()->updateLastActivityTime(); } return $next($request); }
最后,在AppHttpKernel.php
'web' => [ // other middleware... AppHttpMiddlewareRefreshUserActivity::class, ],
Auth::attempt()
: 🎜rrreee🎜3 Actualiser la session régulièrement🎜🎜Une autre solution consiste à actualiser la session régulièrement, c'est-à-dire tous les. chronométrer l'utilisateur Lors de l'exécution d'une opération ou de la visite d'une page, mettre à jour la dernière heure active de la session, prolongeant ainsi le délai d'expiration de la session. Cette fonction peut être réalisée via un middleware. Créez d'abord un middleware nommé RefreshUserActivity
: 🎜rrreee🎜 Puis mettez à jour l'heure de la dernière activité de la session dans le middleware : 🎜rrreee🎜Enfin, dans le fichier AppHttpKernel.php
Enregistrez-le middleware : 🎜rrreee🎜Grâce aux trois méthodes ci-dessus, nous pouvons résoudre efficacement le problème courant de l'échec du temps de connexion à Laravel. Définir un délai d'expiration de session raisonnable, utiliser la fonction « Se souvenir de moi » ou actualiser régulièrement la session peut permettre aux utilisateurs de rester connectés même s'ils ne fonctionnent pas pendant une longue période, améliorant ainsi l'expérience utilisateur et la sécurité du système. 🎜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!