@@ -11,26 +11,66 @@ $ composer require xiaodi/think-jwt
1111```
1212
1313## 使用
14- 1 . 命令生成签名key
14+ ~~ 1. 命令生成签名key~~
1515``` sh
1616$ php think jwt:make
1717```
1818
19192 . 配置
2020` config/jwt.php `
2121
22+ 完整多应用配置
23+ ``` php
24+ <?php
25+
26+ return [
27+ 'default' => 'admin',
28+ 'apps' => [
29+ 'admin' => [
30+ 'token' => [
31+ 'uniqidKey' => 'uid',
32+ 'signerKey' => '',
33+ 'notBefore' => 0,
34+ 'expiresAt' => 3600,
35+ 'refreshTTL' => 7200,
36+ 'signer' => 'Lcobucci\JWT\Signer\Hmac\Sha256',
37+ 'type' => 'Header',
38+ 'refresh' => 50001,
39+ 'relogin' => 50002,
40+ 'iss' => '',
41+ 'aud' => '',
42+ 'automaticRenewal' => false,
43+ ],
44+ 'user' => [
45+ 'bind' => false,
46+ 'model' => '',
47+ ],
48+ 'blacklist' => [
49+ 'cacheKey' => 'admin',
50+ ],
51+ ]
52+ ]
53+ ];
54+
55+ ```
56+ ## token
2257* ` uniqidKey ` 用户唯一标识
2358* ` signerKey ` 密钥
2459* ` notBefore ` 时间前不能使用 默认生成后直接使用
2560* ` expiresAt ` Token有效期(秒)
2661* ` signer ` 加密算法
2762* ` type ` 获取 Token 途径
28- * ` inject ` 是否注入用户模型
29- * ` model ` 用户模型
3063* ` refresh ` Token过期抛异常code = 50001
3164* ` relogin ` Token失效异常code = 50002
3265* ` automaticRenewal ` [ 开启过期自动续签] ( 过期自动续签 )
3366
67+ ## user
68+ * ` bind ` 是否注入用户模型(中间件有效)
69+ * ` model ` 用户模型文件
70+
71+ ## blacklist
72+ * ` cacheKey ` 黑名单缓存key
73+
3474以下两个异常都会抛一个HTTP异常 StatusCode = 401
3575* ` xiaodi\Exception\HasLoggedException `
3676* ` xiaodi\Exception\TokenAlreadyEexpired `
@@ -43,12 +83,21 @@ public function login()
4383{
4484 //...登录判断逻辑
4585
86+ // 默认应用
4687 return json([
4788 'token' => Jwt::token(['uid' => 1]),
4889 'token_type' => Jwt::type(),
4990 'expires_in' => Jwt::ttl(),
5091 'refresh_in' => Jwt::refreshTTL()
5192 ]);
93+
94+ // 指定应用
95+ return json([
96+ 'token' => Jwt::store('wechat')->token(['uid' => 1]),
97+ 'token_type' => Jwt::type(),
98+ 'expires_in' => Jwt::ttl(),
99+ 'refresh_in' => Jwt::refreshTTL()
100+ ]);
52101}
53102```
54103
@@ -65,7 +114,11 @@ class User {
65114 public function test()
66115 {
67116 try {
117+ // 默认应用
68118 Jwt::verify($token);
119+
120+ // 默认应用
121+ // Jwt::store('wechat')->verify($token);
69122 } catch (HasLoggedException $e) {
70123 // 已在其它终端登录
71124 } catch (TokenAlreadyEexpired $e) {
@@ -80,27 +133,15 @@ class User {
80133
81134```
82135
83- ### 中间件验证
136+ ### 路由验证
84137``` php
85- use xiaodi\JWTAuth\Jwt;
86-
87- use app\model\User;
88-
89- class UserController {
90- protected $middleware = ['JwtMiddleware'];
91-
92- public function test(Jwt $jwt)
93- {
94- var_dump($jwt->getClaims());
95- }
138+ use xiaodi\JWTAuth\Middleware\Jwt;
96139
97- // 开启用户模型注入
98- public function user(User $user)
99- {
100- var_dump($user->nickname);
101- }
102- }
140+ // 默认应用
141+ Route::get('/hello', 'index/index')->middleware(Jwt::class);
103142
143+ // 指定应用
144+ Route::get('/hello', 'index/index')->middleware(Jwt::class, 'wechat');
104145```
105146
106147## Token 自动获取
@@ -126,12 +167,16 @@ Url | Request | token |
126167
127168return [
128169
129- 'default' => [
130- // ...其它配置
131- 'type' => 'Header',
132-
133- // 'type' => 'Cookie',
134- // 'type' => 'Url',
170+ 'apps' => [
171+ 'admin' => [
172+ 'token' => [
173+ // ...其它配置
174+ 'type' => 'Header',
175+
176+ // 'type' => 'Cookie',
177+ // 'type' => 'Url',
178+ ]
179+ ]
135180 ]
136181
137182];
0 commit comments