2021-11-18 17:57:04 +08:00
|
|
|
|
<?php
|
|
|
|
|
namespace app\middleware;
|
|
|
|
|
|
|
|
|
|
use Closure;
|
|
|
|
|
use app\service\Jwt as JwtService;
|
2021-12-20 10:14:32 +08:00
|
|
|
|
use think\facade\Request;
|
2021-11-18 17:57:04 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* API登录认证(需要先调用JWT解析用户信息)
|
|
|
|
|
* Class ApiLogin
|
|
|
|
|
* @package app\middleware
|
|
|
|
|
*/
|
|
|
|
|
class ApiLogin
|
|
|
|
|
{
|
|
|
|
|
public function handle($request, Closure $next) {
|
2021-12-20 10:14:32 +08:00
|
|
|
|
|
2021-11-18 17:57:04 +08:00
|
|
|
|
$authorization = $request->authorization ?? '';
|
2021-12-20 10:14:32 +08:00
|
|
|
|
|
2021-11-18 17:57:04 +08:00
|
|
|
|
if (empty($authorization)) {
|
2021-12-20 10:14:32 +08:00
|
|
|
|
return json(['code' => 6001, 'msg' => '登陆失效']);
|
2021-11-18 17:57:04 +08:00
|
|
|
|
}
|
|
|
|
|
if (!JwtService::validate($authorization)) {
|
|
|
|
|
return json(['code' => 6001, 'msg' => 'token验证失败或已失效']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$userInfo = $request->user ?? [];
|
|
|
|
|
if (!isset($userInfo['user_id']) || empty($userInfo['user_id'])) {
|
|
|
|
|
return json(['code' => 6001, 'msg' => 'token已失效']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 自定义过期时间校验。
|
|
|
|
|
if(isset($userInfo['expire_time']) && time() >= $userInfo['expire_time']) {
|
|
|
|
|
return json(['code' => 6001, 'msg' => 'token已失效']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $next($request);
|
|
|
|
|
}
|
|
|
|
|
}
|