【问题标题】:Create a timer only for admin仅为管理员创建计时器
【发布时间】:2018-12-27 12:16:22
【问题描述】:

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

有什么想法吗?

【问题讨论】:

  • 向我们展示您的代码?
  • 到目前为止您尝试过什么?这取决于您如何构建事物,但猜测您可以检查用户所在的角色并在会话 cookie 上设置不同的超时,或者让检查服务器上有效会话的代码检查角色和最后一个他们提出请求的时间,而不是当前时间,并在此基础上决定是否将他们注销。

标签: php laravel session authentication admin


【解决方案1】:

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);
}

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多