I switched to database
driver for Session and migrated the table. I've noticed that even after the logout action, the value last_activity
in the table keeps getting updated after every refresh, even if the user isn't logged-in anymore.
I've tried removing it from the records of the database, but once the user refreshs at the login page, it gets inserted again.
I believe I'm doing something wrong to logout the user well. I want Laravel to stop refreshing the record of the session, as it might cause issues if every logged-out user kept accessing the database with their refreshes.
I'm logging in like this:
if (Auth::attempt($request->only('email', 'password'), ($request->remember_me === "on" ? true : false))) {
// return settings too
if(Auth::user()->active === false){
return response()->json(array('status' => 'failure', 'message' => "Your account isn't active!"),500);
}
return response()->json(
array(
'status' => 'success',
'message' => "Login is successful!"
),
200
);
}
I'm logging out like this:
public function logoutUser(Request $request){
Auth::user()->tokens()->delete();
Session::flush();
}
It's a SPA project via Sanctum.
config/session.php
'driver' => env('SESSION_DRIVER', 'database'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
The user access /login page, then they get redirected to /dashboard. Basically, /dashboard needs auth, otherwise, you don't need to be logged in.
I've tried using /dashboard
by the path
field and cleared the config, it didn't work.
** I've noticed that the session gets registered regardless if the user is logged or not, as long as the user visits the website, it gets registered. My understanding was that it happens after the user is logged, as it would be a hassle to insert a record whenever a guest visits.
My question shifts into the following: How can I prevent this behavior from happening? I want to limit the session saving on a specific path only, which is /dashboard, and I want to ignore the session tracking for unlogged users. The moment they logout, the session gets destroyed.
source https://stackoverflow.com/questions/69350967/laravel-session-with-database-driver-keeps-updating-after-logging-out
Comments
Post a Comment