Переглянути джерело

fix(auth): 在 revokeToken 方法中将缓存值改为当前时间戳,以支持新的验证逻辑

runphp 7 місяців тому
батько
коміт
0acc4dd523
1 змінених файлів з 3 додано та 2 видалено
  1. 3 2
      src/Hook/AuthHook.php

+ 3 - 2
src/Hook/AuthHook.php

@@ -22,7 +22,8 @@ class AuthHook
     #[Hook("token_verify")]
     public function checkToken($payload): void
     {
-        if ($this->cache->has(self::TOKEN_REVOKE . $payload->jti)) {
+        if ($this->cache->has(self::TOKEN_REVOKE . $payload->jti)
+            && $this->cache->get(self::TOKEN_REVOKE . $payload->jti) < time() + Auth::SLEEP_WAY) {
             throw new \Exception('token 已失效');
         }
     }
@@ -30,6 +31,6 @@ class AuthHook
     #[Hook("token_revoke")]
     public function revokeToken($payload): void
     {
-        $this->cache->remember(self::TOKEN_REVOKE . $payload->jti, 1, $payload->exp - time() + Auth::SLEEP_WAY);
+        $this->cache->remember(self::TOKEN_REVOKE . $payload->jti, time(), $payload->exp - time() + Auth::SLEEP_WAY);
     }
 }