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

<?php

namespace App\Http\Middleware;

use Closure;


class Groups
{
    /*
       * 用户上次活动的时间
       * */
    private $key_session_last_active = 'last_active_time';

    /*
     * 保持时间
     * */
    private $time_decay = 600;

    private $list_except_path = [
        'broadcasting/auth'
    ];

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // 没有登陆则继续下面的请求 &&  pusher service path 排除
//        $path = $request->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';
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容