仅为管理员创建一个计时器
Create a timer only for admin
我正在使用 Laravel,目前我有两种不同级别的身份验证:会员和管理员。问题是,我希望管理会话超时,但成员会话不会超时。我的用户使用同一台计算机,因此如果管理员可以在 5 分钟不活动后注销会更安全。
我找不到办法做到这一点。
有什么想法吗?
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);
}
我正在使用 Laravel,目前我有两种不同级别的身份验证:会员和管理员。问题是,我希望管理会话超时,但成员会话不会超时。我的用户使用同一台计算机,因此如果管理员可以在 5 分钟不活动后注销会更安全。 我找不到办法做到这一点。
有什么想法吗?
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);
}