$key, //签发者 可以为空 "aud" => '', //面象的用户,可以为空 "iat" => time(), //签发时间 "nbf" => time() + 3, //在什么时候jwt开始生效 (这里表示生成100秒后才生效) "exp" => time() + 7200, //token 过期时间 "data" => $data //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对 ); return JWT::encode($token, $key, "HS384"); //根据参数生成了token,可选:HS256、HS384、HS512、RS256、ES256等 } /** * 验证token * @param $token * @return array|int[] */ function checkToken($token): array { $key = 'LAL@lc!'; $status = array("code" => 2); try { JWT::$leeway = 60; //当前时间减去60,把时间留点余地 $decoded = JWT::decode($token, new Key($key, 'HS384')); //同上的方式,这里要和签发的时候对应 $arr = (array)$decoded; $res['code'] = 200; $res['data'] = $arr['data']; $res['data'] = json_decode(json_encode($res['data']), true);//将stdObj类型转换为array return $res; } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 $status['msg'] = "签名不正确"; return $status; } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 $status['msg'] = "token失效"; return $status; } catch (\Firebase\JWT\ExpiredException $e) { // token过期 $status['msg'] = "token失效"; return $status; } catch (Exception $e) { //其他错误 $status['msg'] = "未知错误"; return $status; } } /** * 获取随机字符 * @param int $length * @return string */ function generate_random_str(int $length = 8): string { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $str = ''; $maxIndex = strlen($characters) - 1; for ($i = 0; $i < $length; $i++) { $randomIndex = mt_rand(0, $maxIndex); $str .= $characters[$randomIndex]; } return $str; } /** * 返回图片路径 * @param $imageUrl * @return string */ function get_image_url($imageUrl):string { $domain = \think\facade\Request::instance()->domain(); $url = config('filesystem.disks.public.url'); $strpos1 = strpos($imageUrl,'http'); $strpos2 = strpos($imageUrl,$url); if ($strpos1 !== false || $strpos2 !== false) { return $imageUrl; } else { return $domain . $url . '/' . $imageUrl; } } /** * 返回跳转链接地址 * @param $jump_url * @return string */ function get_jump_url($jump_url):string { $domain = \think\facade\Request::instance()->domain(); $strpos1 = strpos($jump_url,'http'); $strpos2 = strpos($jump_url,$domain); if ($strpos1 !== false || $strpos2 !== false) { return $jump_url; } else { return $domain . $jump_url; } } /** * 赋予符号 * @param $value * @param $symbol */ function give_symbol(&$value,$symbol = '+') { $value = $symbol . $value; } /** * 手机号处理 * @param $phoneNumber * @return string */ function format_phone_number($phoneNumber) { $prefix = substr($phoneNumber, 0, 3); $suffix = substr($phoneNumber, -4); return $prefix . '****' . $suffix; } /** * 获取自定义随机头像 */ function rand_avatar() { $avatarArr = config('custom.avatar') ?: []; $rand = rand(0,count($avatarArr)); return $avatarArr[$rand] ?: ''; } /** * 返回金额 * @param $number * @return string */ function format_money($number) { $units = array("万元", "亿元"); $unitMaxValue = 10000; // 单位最大值 $unitIndex = 0; // 单位索引 if ($number >= $unitMaxValue && $number % $unitMaxValue === 0) { while (abs($number) >= $unitMaxValue && $unitIndex < count($units) - 1) { $number = $number / $unitMaxValue; $unitIndex++; } $formattedNumber = number_format($number, 0) . $units[$unitIndex]; } elseif ($number % $unitMaxValue === 0) { $formattedNumber = $number / $unitMaxValue . $units[0]; } else { $formattedNumber = $number . '元'; } return $formattedNumber; }