Ich entwickle eine Anwendung mit Laravel 11.8 und aufgrund spezifischer Geschäftsanforderungen benötigen verschiedene Benutzer unterschiedliche Sitzungsdauern. Obwohl der Wert in der Konfiguration wie erwartet aktualisiert wird, verwendet die Sitzungsdauer weiterhin den in der .env-Datei definierten Wert.
Hier ist die Middleware:
Code: Select all
class SessionLifeTime {
public function handle(Request $request, Closure $next): Response {
if (Auth::check()) {
$user = Auth::user();
if ($user && isset($user->session_lifetime)) {
config(['session.lifetime' => $user->session_lifetime]);
}
}
return $next($request);
}
}
Ich habe gelesen, dass diese Middleware vor \Illuminate\Session\Middleware\StartSession in app/Http/Kernel.php< platziert werden muss /em> unter der Eigenschaft protected $middlewarePriority. Da ich jedoch Laravel 11.8 verwende, existiert die Datei app/Http/Kernel.php nicht mehr. Selbst wenn dies der Fall wäre, würde dies nicht helfen, da \Illuminate\Session\Middleware\StartSession erforderlich ist, damit Illuminate\Support\Facades\Auth funktioniert.
ChatGPT hat Folgendes vorgeschlagen:
Code: Select all
class SessionLifeTime {
public function handle(Request $request, Closure $next): Response {
if (Auth::check()) {
$user = Auth::user();
if ($user && isset($user->session_lifetime)) {
config(['session.lifetime' => $user->session_lifetime]);
$cookieName = config('session.cookie');
$sessionId = Cookie::get($cookieName);
if ($sessionId) {
Cookie::queue(Cookie::make(
$cookieName,
$sessionId,
$user->session_lifetime
));
}
}
}
return $next($request);
}
}
Diese Lösung funktioniert jedoch auch nicht. Ich nehme an, ich muss die Cookies bearbeiten, damit sich die Sitzungsdauer ändert, aber ich weiß nicht, wie ich das angehen soll.