管理者と一般ユーザーなどで複数のログインフォームを持つ場合に、個別にログインの有効時間を設定する方法
意外と難しいやり方をしている記事が多かったため、メモ用に作成
やり方
app/Providers/AppServiceProvider.php
public function boot()
{
// 以下を追加する
if (request()->is('admin*')) {
// urlのpathに「admin」が含まれる場合はadmin用の設定を適応する
config(['session.cookie' => config('session.cookie_admin')]);
config(['session.lifetime' => config('session.lifetime_admin')]);
}
}
config/session.php
'lifetime' => env('SESSION_LIFETIME', 120),
//以下を追加する
'lifetime_admin' => env('SESSION_LIFETIME_ADMIN', 240),
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
// 以下を追加する
'cookie_admin' => env(
'SESSION_COOKIE_ADMIN',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session_admin'
),
.env
SESSION_LIFETIME=120
// 以下を追加する
SESSION_LIFETIME_ADMIN=240
上記の設定だと以下のようになります
(例) http://localhost/login ←pathに「admin」を含まないのでログインの有効時間は120分間
(例) http://localhost/admin/login ←pathに「admin」を含むのでログインの有効時間は240分間