0

我切换到databaseSession 驱动程序并迁移了表。我注意到即使在注销操作之后,last_activity表中的值也会在每次刷新后不断更新,即使用户不再登录也是如此。

我已经尝试从数据库的记录中删除它,但是一旦用户在登录页面刷新,它就会再次插入。

我相信我在注销用户方面做错了。我希望 Laravel 停止刷新会话记录,因为如果每个注销的用户都在刷新时继续访问数据库,这可能会导致问题。

我是这样登录的:

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
            );
        }

我这样注销:

public function logoutUser(Request $request){
      Auth::user()->tokens()->delete();
      Session::flush();
    }

这是一个通过 Sanctum 的 SPA 项目。

配置/会话.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',

用户访问 /login 页面,然后他们被重定向到 /dashboard。基本上,/dashboard 需要授权,否则,你不需要登录。

我试过/dashboardpath字段使用并清除配置,它没有工作。

** 我注意到无论用户是否登录,会话都会被注册,只要用户访问该网站,它就会被注册。我的理解是,它发生在用户登录后,因为每当客人访问时插入记录会很麻烦。

我的问题变成了以下问题:如何防止这种行为发生?我只想将会话保存限制在特定路径上,即 /dashboard,并且我想忽略未登录用户的会话跟踪。他们注销的那一刻,会话被破坏。

4

0 回答 0