代码之家  ›  专栏  ›  技术社区  ›  Loctarogar

如何在用户注销时节省时间?

  •  1
  • Loctarogar  · 技术社区  · 5 年前

    我用 Laravel 5.8 身份验证和授权。 我有一个管理公司和员工的“管理员”。 当管理员登录时,我想显示新的公司和用户是什么 自上次管理会话后创建。为此我想储存 数据库管理员会话完成并从数据库查询的时间 所有公司和工人都知道自上次会议以来创建的内容。 如果管理员使用 logout 我可以在数据库中存储时间,但如何 如果管理员刚刚关闭选项卡,则存储时间??

    - - - - - - - - - - - - - -*-

    我创建了中间件以节省上次请求的时间:

    public function handle($request, Closure $next)
        {
            if(Auth::check()){
                $id = Auth::id();
                Admin::whereId($id)->update(['last_enter' => now("Europe/Moscow")]);
            }
    
            return $next($request);
        }
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   Edison Biba    5 年前

    既然你只想用laravel归档,我建议你检查一下 middlewares 你可以有一个中间件,其中的请求将通过,所以你的最后一个请求意味着这是用户最后一次使用它。

    Here 您可以在laravel中了解更多关于中间件的信息。

        2
  •  1
  •   Script47    5 年前

    从轶事的角度讲,你可以使用 sendBeacon unload 事件来发送请求。我必须用它来捕捉用户观看视频的时间,如果他们关闭了我需要录制的标签,这种方法对我来说一直有效。

    window.addEventListener('unload', function() {
        navigator.sendBeacon('your-url',
          JSON.stringify({})
        );
    }, false);
    

    或者 ,您可以在用户关闭窗口的情况下将注销时间设置为会话超时时间,例如: sign-in-time + session-timeout-time = logout-time ,但同样,这并不“准确”。