Skip to content

Commit c942c22

Browse files
authored
Update README.md
1 parent 291c39c commit c942c22

1 file changed

Lines changed: 72 additions & 27 deletions

File tree

README.md

Lines changed: 72 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1919
2. 配置
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

127168
return [
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

Comments
 (0)