仅为管理员创建计时器

时间:2018-07-19 11:16:55

标签: php laravel session authentication admin

我正在使用Laravel,目前我有两种不同的身份验证级别:成员和管理员。问题是,我希望管理会话有一个超时时间,但对于成员会话却没有。我的用户使用同一台计算机,因此如果管理员在闲置5分钟后可以注销,这将更加安全。 我找不到解决办法。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Laravel实现此目的的方法是通过中间件。 您可以创建一个新的中间件,并根据登录的用户执行超时检查。 有关使用中间件的更多详细信息,请参阅官方文档。

https://laravel.com/docs/5.6/middleware

中间件的粗略实现如下所示:

public function handle($request, Closure $next){
    $user = auth()->user();

    if($user->isAdmin()){
        $time_elapsed = time() - session('lastActivityTime');
        if($time_elapsed > self::ADMIN_TIMEOUT){ // or wherever you store the configuration
            auth()->logout();
        }
    }

    $this->session->put('lastActivityTime', time());
    return $next($request);
}