<?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';
}
}
laravel 一定时间未操作退出登录
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 现在一些app为了考虑用户信息安全,会加上一些安全设置,多数见于银行类的APP。 APP退到后台时间处理 这个比较...
- 前言 我们有些项目出于安全考虑(或者登录失效),在App进入后台一定时间后需要退出App(或者进入登入、其他身份验...
- 背景: 做商品支付的开发过程中,一个必须考虑到的环节:用户在点击下单购买,同时也点击了支付,这时候由于各种原因,用...
- 一、背景 我们平时做系统为了保证用户操作数据的安全性,很多时候当用户长时间不再操作电脑的时候,应该给用户自动退出系...