'lihaioa', 'iss' => 'ceshi-oa.lihaink.cn', //签发者 可选 'aud' => 'lihaioa', //接收该JWT的一方,可选 'exptime' => 7 * 86400, //过期时间,这里设置7天 ]; /** * 构造方法 * @access public * @param App $app 应用对象 */ public function __construct(App $app) { $this->app = $app; $this->request = $this->app->request; $this->module = strtolower(app('http')->getName()); $this->controller = strtolower($this->request->controller()); $this->action = strtolower($this->request->action()); $this->uid = 0; $this->did = 0; // 控制器初始化 $this->initialize(); } // 初始化 protected function initialize() { //每页显示数据量 $this->pageSize = Request::param('page_size', \think\facade\Config::get('app.page_size')); } /** * Api处理成功结果返回方法 * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiSuccess($msg = 'success', $data = []) { return $this->apiReturn($data, 0, $msg); } /** * Api处理结果失败返回方法 * @param $error_code * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiError($msg = 'fail', $data = [], $code = 1) { return $this->apiReturn($data, $code, $msg); } /** * 返回封装后的API数据到客户端 * @param mixed $data 要返回的数据 * @param integer $code 返回的code * @param mixed $msg 提示信息 * @param string $type 返回数据格式 * @param array $header 发送的Header信息 * @return Response */ protected function apiReturn($data, int $code = 0, $msg = '', string $type = '', array $header = []): Response { $result = [ 'code' => $code, 'msg' => $msg, 'time' => time(), 'data' => $data, ]; $type = $type ?: 'json'; $response = Response::create($result, $type)->header($header); throw new HttpResponseException($response); } /** * 验证用户访问权限 */ protected function checkAuth() { $uid = JWT_UID; $loginAdmin = Db::name('Admin')->where(['id' => $uid])->find(); if(!$loginAdmin['status']){ $this->apiError('用户已禁止登录'); } $baseUrl = explode('/', request()->baseUrl()); $action = $baseUrl[count($baseUrl)-1] ?? '-' ; $controller = $baseUrl[count($baseUrl)-2] ?? '-'; $controllerArray = explode('_', $controller); $prefixMod = strtolower($controllerArray[0] ?? '-'); $conMod = strtolower($controllerArray[1] ?? '-'); $gougu = new Systematic(); $gougu->auth($uid); $authListAll = Cache::get('RulesSrc0'); $authList = Cache::get('RulesSrc' . $uid); $pathUrl = $prefixMod . '/' . $conMod . '/' . $action; if (!in_array($pathUrl, $authList)) { $this->apiError('用户无权限', [], 2); } } }