student = new \stdClass(); $request->teacher = new \stdClass(); $request->parent = new \stdClass(); // 通过反射获取控制器哪些方法不需要登录和鉴权 $controller = new ReflectionClass($request->controller); $noNeedLogin = $controller->getDefaultProperties()['noNeedLogin'] ?? []; // $res = JwtToken::getExtend(); $is_need_login = 0; $msg = ''; try { $extend = JwtToken::getExtend(); if ($extend['role'] == 'student') { $request->student = \support\Db::table('student') ->where('id', $extend['id']) ->select('id', 'student_name', 'account', 'openid') ->first(); } elseif ($extend['role'] == 'teacher') { $request->teacher = \support\Db::table('teacher') ->where('id', $extend['id']) ->select('id', 'account', 'teacher_name', 'openid', 'time_zone_name', 'time_zone_abbr', 'time_zone_offset') ->first(); } elseif ($extend['role'] == 'parent') { $request->parent = \support\Db::table('student_parent') ->where('id', $extend['id']) ->select('id', 'parent_name', 'account', 'openid') ->first(); } // $request->user = JwtToken::getUser(); } catch (JwtTokenExpiredException $e) { $is_need_login = 1; $msg = $e->getMessage(); } catch (JwtTokenException $e) { $is_need_login = 1; $msg = $e->getMessage(); } catch (JwtCacheTokenException $e) { $is_need_login = 1; $msg = $e->getMessage(); } // 访问的方法需要登录 if (!in_array($request->action, $noNeedLogin) && !in_array('*', $noNeedLogin) && $is_need_login) { return json([ 'code' => ResponseCode::NEED_LOGIN, 'msg' => $msg, ]); } return $handler($request); } }