From ac55596c939012a515c14b99b01bab6d1de1463d Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Tue, 8 Oct 2024 09:34:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0jwt=E7=9A=84=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/Passport.php | 43 ++++++++++++++++++++++++++++++++- app/api/service/JWTService.php | 25 ++++++++++++------- 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/app/api/controller/Passport.php b/app/api/controller/Passport.php index 95666f7..7aec4cd 100644 --- a/app/api/controller/Passport.php +++ b/app/api/controller/Passport.php @@ -18,6 +18,7 @@ class Passport extends ApiController{ if (!$this->request->isPost()) { return $this->renderError('不支持GET请求'); } + $data = $this->postData(); $model = new UserService; // $data = $this->postData(); @@ -46,4 +47,44 @@ class Passport extends ApiController{ return $this->renderSuccess("注册成功"); } -} \ No newline at end of file +} + +// app/controller/Index.php +// namespace app\controller; + +// use app\service\JWTService; +// use think\Request; + +// class IndexController +// { +// protected $jwtService; + +// public function __construct(JWTService $jwtService) +// { +// $this->jwtService = $jwtService; +// } + +// public function login(Request $request) +// { +// $username = $request->param('username'); +// $password = $request->param('password'); + +// // 假设验证用户名和密码成功 +// $claims = ['id' => 1, 'username' => $username]; + +// $token = $this->jwtService->createToken($claims); + +// return json(['token' => $token]); +// } + +// public function protectedRoute(Request $request) +// { +// $claims = $request->attributes->get('claims'); + +// if (empty($claims)) { +// return json(['error' => 'Unauthorized'], 401); +// } + +// return json(['message' => 'Welcome, ' . $claims['username']]); +// } +// } \ No newline at end of file diff --git a/app/api/service/JWTService.php b/app/api/service/JWTService.php index 16b5aab..459e6ee 100644 --- a/app/api/service/JWTService.php +++ b/app/api/service/JWTService.php @@ -1,10 +1,10 @@ secret); - $token = (new Token())->withClaim('id', $claims['id'])->withClaim('username', $claims['username']); - $token = $token->withExpiresAt(time() + config('jwt.token_ttl')); + $token = (new Builder())->issuedNow()->canOnlyBeUsedAfter(0)->expiresAt(time() + config('jwt.token_ttl')); + + foreach ($claims as $key => $value) { + $token = $token->withClaim($key, $value); + } return (string) $token->sign($signer, $key); } public function verifyToken(string $token): array { - $parser = new Parser(); - $token = $parser->parse((string) $token); - - if ($token->verify(new Sha256(), InMemory::plainText($this->secret))) { - return $token->getClaims(); + try { + $parser = new \Lcobucci\JWT\Parser(); + $token = $parser->parse($token); + + if ($token->verify(new Sha256(), InMemory::plainText($this->secret))) { + return $token->getClaims(); + } + } catch (\Exception $e) { + // Handle exception } return [];