🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
```` <?php /** * api基类,添加用于所有api控制器的方法 * @author ianzhi * @date 2018-06-20 */ namespace app\ninty9api\controller; use app\ninty9api\service\Token as TokenService; use app\admin\model\Nintyuser; use app\admin\model\User; use app\admin\model\Trainer; class Api { /** * @var array 用于记录不需要token验证的方法,将方法名放进数组即可 */ protected $no_need_token = [ ]; /** * Api constructor. * @throws \think\exception\DbException */ public function __construct() { // 公共响应头 header('Content-Type:Application/json'); // 如果需要跨域,写在这里 header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Headers:x-token,user-type,Origin, Access-Control-Request-Headers, SERVER_NAME, Access-Control-Allow-Headers, cache-control, token, X-Requested-With, Content-Type, Accept, Connection, User-Agent, Cookie'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE'); // 验证用户登陆 $user_type = request()->header('user-type'); $action = request()->dispatch()['module'][2] ?: 'index'; if (request()->method() == 'OPTIONS') { exit(); } // 拦截器(放行数组中的方法) // if (!in_array($action, $this->no_need_token)) { // if ($user_type == 'admin') { // $token = request()->header('x-token'); // $user = User::get(['api_token'=>$token]); // request()->bind('user', $user); // } else { // $uid = TokenService::getCurrentUid(); // if (!is_numeric($uid) || $uid == 0) { // $this->success([], 'token不存在,请重新获取!', 401); // } else { // if ($user_type == 'trainer') { // $user = Trainer::get($uid); // } else { // $user = NintyUser::get($uid); // } // request()->bind('user', $user); // } // } // } } /** * 用于成功返回 * @param array $data 响应的数据 * @param string $message 响应信息 * @param int $code 响应码 * @param array $headers 特殊的响应头信息 */ public function success($data=[], $message='请求成功!', $code=200, $headers=[]) { // 添加自定义头 if ($headers) { foreach ($headers as $header_key=>$header_value) { header($header_key . ':' . $header_value); } } // 构造响应内容 $return_data = [ 'code' => $code, 'message' => $message ]; if ($data) { $return_data['data'] = $data; } echo json_encode($return_data, JSON_UNESCAPED_UNICODE); exit; } }