From 83190d0f61b0e2336379ddf2303ab02faf4449cc Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 17 Mar 2023 15:07:34 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96token=E5=88=B0?= =?UTF-8?q?=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/UsersController.php | 11 ++++++++++- app/Models/User.php | 2 +- app/Module/Doo.php | 8 +++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 384587c1e..c126ee9fa 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -299,7 +299,16 @@ class UsersController extends AbstractController public function info() { $user = User::auth(); - User::generateToken($user, in_array(Base::platform(), ['ios', 'android'])); + // + $refreshToken = false; + if (in_array(Base::platform(), ['ios', 'android'])) { + // 移动端token还剩7天到期时获取新的token + $expiredAt = Doo::userExpiredAt(); + if ($expiredAt && Carbon::parse($expiredAt)->isBefore(Carbon::now()->addDays(7))) { + $refreshToken = true; + } + } + User::generateToken($user, $refreshToken); // $data = $user->toArray(); $data['nickname_original'] = $user->getRawOriginal('nickname'); diff --git a/app/Models/User.php b/app/Models/User.php index ac438e219..626a9e4e7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -415,7 +415,7 @@ class User extends AbstractModel } } if ($refresh) { - $days = $userinfo->bot ? 0 : max(1, intval(Base::settingFind('system', 'token_valid_days', 7))); + $days = $userinfo->bot ? 0 : max(1, intval(Base::settingFind('system', 'token_valid_days', 15))); $token = Doo::tokenEncode($userinfo->userid, $userinfo->email, $userinfo->encrypt, $days); } else { $token = Doo::userToken(); diff --git a/app/Module/Doo.php b/app/Module/Doo.php index f4437ade4..4fba1f7f9 100644 --- a/app/Module/Doo.php +++ b/app/Module/Doo.php @@ -44,6 +44,7 @@ class Doo char* translate(char* val, char* val); char* md5s(char* text, char* password); char* macs(); + char* hostID(); EOF, "/usr/lib/doo/doo.so"); $token = $token ?: Base::headerOrInput('token'); $language = $language ?: Base::headerOrInput('language'); @@ -167,7 +168,7 @@ class Doo public static function userExpired(): bool { $expiredAt = self::userExpiredAt(); - return $expiredAt != 'forever' && Carbon::parse($expiredAt)->isBefore(Carbon::now()); + return $expiredAt && Carbon::parse($expiredAt)->isBefore(Carbon::now()); } /** @@ -176,7 +177,8 @@ class Doo */ public static function userExpiredAt(): string { - return self::string(self::doo()->userExpiredAt()); + $expiredAt = self::string(self::doo()->userExpiredAt()); + return $expiredAt === 'forever' ? '' : $expiredAt; } /** @@ -233,7 +235,7 @@ class Doo * @param int $days 有效时间(天) * @return string */ - public static function tokenEncode($userid, $email, $encrypt, int $days = 7): string + public static function tokenEncode($userid, $email, $encrypt, int $days = 15): string { return self::string(self::doo()->tokenEncode($userid, $email, $encrypt, $days)); }