ホームページ >よくある問題 >laravelのログイン時間が切れた場合の対処法

laravelのログイン時間が切れた場合の対処法

DDD
DDDオリジナル
2023-07-05 13:24:091244ブラウズ

Laravel ログイン時エラーの解決策: 1. Cookie セッション設定、「.env」ファイルに「SESSION_LIFETIME」変数を設定できます; 2. ユーザーがリクエストするたびにセッションを更新することで、セッションのライフサイクルを延長します有効期限、またはカスタム ミドルウェアによるセッションのライフ サイクルの延長、3. ユーザー アクティビティ時間を管理し、JavaScript を使用してリクエストを定期的に送信してユーザー アクティビティをシミュレートするか、ユーザーが機密操作を実行するときに ID の再検証を要求します。

laravelのログイン時間が切れた場合の対処法

#この記事の動作環境: Windows 10 システム、laravel 9 バージョン、dell g3 コンピューター。

Laravel は、スケーラブルな Web アプリケーションを構築するための人気のある PHP 開発フレームワークです。 Laravel では、ユーザーログインは非常に一般的な機能ですが、ログイン時間が無効になるという問題が発生することがあります。ユーザーが一定期間非アクティブになった場合、ユーザーは自動的にログアウトされます。これはセキュリティとユーザー エクスペリエンス上の理由によるものですが、場合によっては、この自動ログアウトが望ましい動作ではないことがあります。この記事は、Laravel のログイン時間が無効になる問題を解決するのに役立ちます。

1. Cookie セッションの設定

Laravel では、セッションは Cookie を通じて実装されます。 Laravel の設定ファイルには、セッション関連の設定項目があります。デフォルトでは、「ライフタイム」オプションは 120 分に設定されています。これは、120 分間アクティビティがない場合、ユーザーは自動的にログアウトされることを意味します。

セッションのライフサイクルを変更したい場合は、`.env` ファイルで `SESSION_LIFETIME` 変数を設定できます。たとえば、セッションの有効期間を 30 分に設定したい場合は、`SESSION_LIFETIME=30` を `.env` ファイルに追加し、アプリケーション構成キャッシュを再構成します。

2. セッションのライフ サイクルを延長する

場合によっては、ユーザーが引き続きログイン状態を維持できるように、セッションのライフ サイクルを延長することができます。これは 2 つの方法で実現できます。

最初の方法は、ユーザーがリクエストするたびにセッションの有効期限を更新することです。アプリケーションのベース コントローラーに次のコード スニペットを追加できます。

public function __construct()
{
$this->middleware(function ($request, $next) {
$response = $next($request);
session()->put('last_activity', time());
return $response;
});
}

上記のコードは、リクエストごとにセッションの `last_activity` キーに現在時刻を保存します。このようにして、セッションの有効期限が現在のリクエストの時間にリセットされるため、セッションのライフ サイクルが延長されます。

2 番目の方法は、カスタム ミドルウェアを通じてセッションのライフ サイクルを延長することです。 「app/Http/Middleware」ディレクトリに「ExtendSessionLifetime」などの新しいミドルウェアを作成できます。ミドルウェアの `handle` メソッドに次のコード スニペットを追加します。

public function handle($request, Closure $next)
{
if (auth()->check()) {
session()->put('last_activity', time());
}
return $next($request);
}
然后,在`app/Http/Kernel.php`文件的`$middleware`数组中注册你的中间件:
protected $middleware = [
// ...
\App\Http\Middleware\ExtendSessionLifetime::class,
];

この方法では、ミドルウェアはリクエストごとに実行され、ユーザーがすでにログインしている場合、セッションの有効期限は次のようになります。現在のリクエスト時間にリセットされます。

3. ユーザー アクティビティ時間の管理

セッションのライフ サイクルを延長することに加えて、不必要な自動署名を回避するために、他の方法でユーザー アクティビティ時間を管理することもできます。外。

1 つのアプローチは、JavaScript を使用してリクエストを定期的に送信し、ユーザー アクティビティをシミュレートすることです。ユーザーアクティビティをシミュレートするために、一定の間隔でサーバー上の特定の URL にリクエストを送信する JavaScript 関数を作成できます。サーバーはリクエストを受信し、ユーザーのセッション有効期限を更新します。

もう 1 つのアプローチは、ユーザーが機密性の高い操作を実行するときに再認証を要求することです。たとえば、注文の支払いやパスワードの変更などのアクションを実行するときに、ユーザーが本人確認を行うためにパスワードの再入力を要求できます。このようにして、セッションの有効期限が切れた場合でも、ユーザーは機密性の高い操作を実行するときに自分の ID を再認証する必要があります。

概要

Laravel のログイン時間の有効期限はよくある問題ですが、セッションのライフサイクルを延長し、ユーザーのアクティビティ時間を管理することで、この問題を解決できます。まず、Cookie セッションの構成を理解する必要があります。次に、セッションのライフ サイクルを設定することで、ログイン時間の有効期限の問題を解決できます。次に、セッションの有効期限を更新し、ユーザーのアクティビティ時間を管理することで、ユーザー セッションの有効期間をさらに制御できます。これらの方法を通じて、より優れたユーザー エクスペリエンスとセキュリティを提供できます。

以上がlaravelのログイン時間が切れた場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。