// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\middleware; use think\App; use think\Response; use xiaodi\JWTAuth\Exception\JWTException; class Check{ protected $app; public function __construct(App $app){ $this->app = $app; } /** * @title 处理请求 * * @param [type] $request * @param \Closure $next * @param [type] $store * @return void */ public function handle($request, \Closure $next, $store = null){ try { $verify = $this->app->get('jwt')->store($store)->verify(); if (true === $verify) { if ($this->app->get('jwt.user')->getBind()) { if ($user = $this->app->get('jwt.user')->find()) { // 路由注入 $request->user = $user; // 绑定当前用户模型 $class = $this->app->get('jwt.user')->getClass(); $this->app->bind($class, $user); // 绑定用户后一些业务处理 $this->bindUserAfter($request); } else { return Response::create(['message' => '登录校验已失效, 请重新登录', 'code' => 2000], 'json', 401); } } return $next($request); } } catch (JWTException $e) { return Response::create(['message' => $e->getMessage(), 'code' => 2000], 'json', 401); } } public function bindUserAfter(){ } }