首页 > 解决方案 > 中间件中的 laravel 会话身份验证

问题描述

我在会话中存储了一些值并在中间件中检查以进行身份​​验证。我的会话超时是 SESSION_LIFETIME=120 。当它的页面适合 30 分钟并对其执行一些操作时,中间件验证它是真实的并继续前进,但由于它给出的代码一些功能错误,但我再次刷新它重定向到登录页面的代码

laravel 版本 6 处理方法

    {
        $this->authuser   = getLogedinUser();

  if(Arr::has($this->authuser,['id','name','email',token]) && Arr::get($this->authuser,'token',0))
        {
            return $next($request);
        }
        return redirect('/login');
    }```

标签: laravellaravel-middleware

解决方案


尝试这个

  public function handle($request, Closure $next)
    {
        if(!$this->session->has('lastActivityTime'))
            $this->session->put('lastActivityTime',time());
        elseif(time() - $this->session->get('lastActivityTime') > $this->getTimeOut()){
            $this->session->forget('lastActivityTime');
            Auth::logout();
            return redirect('auth/login')->withErrors(['You had not activity in 30 minutes']);
        }
        $this->session->put('lastActivityTime',time());
        return $next($request);
    }

推荐阅读