laravel 一定时间未操作退出登录

path();
//        dd($path);
//        if (!auth()->check() || in_array($path, $this->list_except_path)) {
//            return $next($request);
//        }
        if (!auth()->guard('admin')->check()) {
            return $next($request);
        }
//        echo 1;die;
        // 如果上次缓存有存值
//        dd(auth()->guard('admin')->user()->email);
        if (session()->has($this->key_session_last_active)) {
            // 如果超过session的衰变期 && 还在登录状态
            $time_decay = time() - session($this->key_session_last_active);

            if ($time_decay > $this->time_decay) {
                $email = auth()->guard('admin')->user()->email;
                auth()->guard('admin')->logout();
                session()->forget($this->key_session_last_active);
                $msg=$email.'您好,系统监测到您2个小时未操作,请重新登陆!';
                return redirect(route('admin.login'))->withInput(compact('msg'));
            }
        }

        // logout操作

        if ($this->determineLogoutAction()){
            session()->has($this->key_session_last_active) && session()->forget($this->key_session_last_active);
        } else {
            session()->put($this->key_session_last_active, time());
        }
        return $next($request);
    }

    /**
     * 是否是logout action
     * @return bool
     */
    private function determineLogoutAction(): bool
    {
        $route_name = request()->route()->getAction();

        return $route_name === 'logout';
    }
}

你可能感兴趣的:(laravel 一定时间未操作退出登录)