header(); $access_token = isset($header['access-token']) ? $header['access-token'] : (isset($header['access_token']) ? $header['access_token'] : ''); $user_agent = isset($header['code-agent']) ? $header['code-agent'] : (isset($header['code_agent']) ? $header['code_agent'] : ''); $uid = isset($header['uid']) ? $header['uid'] : ''; //TODO $JWT = new Jwt(); //定义用户代理商和UID defined('ACCESS_TOKEN') || define('ACCESS_TOKEN', $access_token); defined('USER_AGENT') || define('USER_AGENT', $user_agent); defined('UID') || define('UID', $uid); //鉴权由大面到细节 if (!UID) { return sendErrorMessage(1006, 'uid缺失'); } //解析token if ($access_token) { $res = $JWT->checkToken($access_token); if ($res['code'] != 0) { return sendErrorMessage(1002, 'token失效'); } defined('TOKEN') || define('TOKEN', $res['data']); //ACCESS_TOKEN全部数据 $data = $res['data']['data'] ?? null; //获取解密数据 defined('TOKEN_DATA') || define('TOKEN_DATA', $data); //ACCESS_TOKEN的DATA数据 // access_token必须验证 if (!$access_token) { return sendErrorMessage(1001, 'token缺失'); } if ($data['uid'] != $uid) { return sendErrorMessage(1003, 'uid与token不符'); } } //授权或者登录验证 if ($name == 'auth' || $name == 'user') { switch (USER_AGENT) { // APP case 'app': if (empty($data['device_id'])) { return sendErrorMessage(1004, '尚未授权给APP'); } defined('DEVICE_ID') || define('DEVICE_ID', $data['device_id']); defined('APP_USER_ID') || define('APP_USER_ID', $data['app_user_id']); break; // 微信公众号 case 'weixin': if (empty($data['openid']) || empty($data['wechat_user_id'])) { return sendErrorMessage(1004, '尚未授权给公众号'); } defined('OPENID') || define('OPENID', $data['openid']); defined('WECHAT_USER_ID') || define('WECHAT_USER_ID', $data['wechat_user_id']); break; // 微信小程序 case 'mp_weixin': if (empty($data['openid']) || empty($data['mpweixin_user_id'])) { return sendErrorMessage(1004, '尚未授权给小程序'); } defined('OPENID') || define('OPENID', $data['openid']); defined('MPWEIXIN_USER_ID') || define('MPWEIXIN_USER_ID', $data['mpweixin_user_id']); break; // 抖音小程序 case 'mp_toutiao': if (empty($data['openid']) || empty($data['mp_toutiao_user_id'])) { return sendErrorMessage(1004, '尚未授权给小程序'); } defined('OPENID') || define('OPENID', $data['openid']); defined('MP_TOUTIAO_USER_ID') || define('MP_TOUTIAO_USER_ID', $data['mp_toutiao_user_id']); break; // QQ小程序 case 'mp_qq': if (empty($data['openid']) || empty($data['mpqq_user_id'])) { return sendErrorMessage(1004, '尚未授权给小程序'); } defined('OPENID') || define('OPENID', $data['openid']); defined('MPQQ_USER_ID') || define('MPQQ_USER_ID', $data['mpqq_user_id']); break; // 支付宝小程序 case 'mp_alipay': if (empty($data['openid']) || empty($data['mpalipay_user_id'])) { return sendErrorMessage(1004, '尚未授权给小程序'); } defined('OPENID') || define('OPENID', $data['openid']); defined('MPALIPAY_USER_ID') || define('MPALIPAY_USER_ID', $data['mpalipay_user_id']); break; default: break; } } //登录验证 // if ($name == 'user') { // if (empty($data['user_id'])) { // return sendErrorMessage(1005, '尚未登录'); // } // } //定义USER_ID defined('USER_ID') || define('USER_ID', $access_token ? $data['user_id'] : ''); $response = $next($request); return $response; } }