Skip to content

Commit 111a964

Browse files
authored
Update Jwt.php
1 parent 24e5c6a commit 111a964

1 file changed

Lines changed: 39 additions & 25 deletions

File tree

src/Jwt.php

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function __construct(Builder $builder)
5050
*
5151
* @param array $claims
5252
*
53-
* @return Token
53+
* @return string
5454
*/
5555
public function token(array $claims)
5656
{
@@ -72,8 +72,7 @@ public function token(array $claims)
7272
$this->builder->setIssuedAt($time)
7373
->identifiedBy($uniqid, true)
7474
->setNotBefore($not_before)
75-
->setExpiration($expires_at)
76-
->set('time_issue', $time);
75+
->setExpiration($expires_at);
7776

7877
foreach ($claims as $key => $claim) {
7978
$this->builder->withClaim($key, $claim);
@@ -82,10 +81,20 @@ public function token(array $claims)
8281
$token = $this->builder->getToken($this->getSigner(), $this->makeKey());
8382

8483
if ($this->sso()) {
85-
$this->setTimeIssue($uniqid, $time);
84+
$this->setCacheIssuedAt($uniqid, $time);
8685
}
8786

88-
return $token;
87+
return $token->__toString();
88+
}
89+
90+
public function ttl()
91+
{
92+
return $this->options['expires_at'];
93+
}
94+
95+
public function type()
96+
{
97+
return 'bearer';
8998
}
9099

91100
/**
@@ -110,8 +119,7 @@ public function parse(string $token)
110119
* 验证 Token.
111120
*
112121
* @param string $token
113-
*
114-
* @return void
122+
* @return boolean
115123
*/
116124
public function verify(string $token)
117125
{
@@ -139,10 +147,10 @@ public function verify(string $token)
139147
if ($this->sso()) {
140148
$jwt_id = $this->token->getHeader('jti');
141149
// 当前Token签发时间
142-
$time_issue = $this->token->getClaim('time_issue');
150+
$issued_at = $this->token->getClaim('iat');
143151
// 最新Token签发时间
144-
$cache_time_issue = $this->getTimeIssue($jwt_id);
145-
if ($time_issue != $cache_time_issue) {
152+
$cache_issued_at = $this->getCacheIssuedAt($jwt_id);
153+
if ($issued_at != $cache_issued_at) {
146154
throw new HasLoggedException('已在其它终端登录,请重新登录');
147155
}
148156
}
@@ -161,7 +169,7 @@ public function verify(string $token)
161169
*
162170
* @return void
163171
*/
164-
protected function setTimeIssue($jwt_id, $value)
172+
protected function setCacheIssuedAt($jwt_id, $value)
165173
{
166174
$key = $this->options['sso_cache_key'].'-'.$jwt_id;
167175
$ttl = $this->options['expires_at'] + $this->options['not_before'];
@@ -176,16 +184,16 @@ protected function setTimeIssue($jwt_id, $value)
176184
*
177185
* @return string
178186
*/
179-
protected function getTimeIssue($jwt_id)
187+
protected function getCacheIssuedAt($jwt_id)
180188
{
181189
return Cache::get($this->options['sso_cache_key'].'-'.$jwt_id);
182190
}
183191

184-
public function setToken(Token $token)
185-
{
186-
return $this->token = $token;
187-
}
188-
192+
/**
193+
* 获取Token对象
194+
*
195+
* @return void
196+
*/
189197
public function getToken()
190198
{
191199
return $this->token;
@@ -204,7 +212,7 @@ public function refresh()
204212
/**
205213
* 是否单点登录.
206214
*
207-
* @return B
215+
* @return boolean
208216
*/
209217
private function sso()
210218
{
@@ -214,7 +222,7 @@ private function sso()
214222
/**
215223
* 获取 sso_key.
216224
*
217-
* @return void
225+
* @return string
218226
*/
219227
private function ssoKey()
220228
{
@@ -275,6 +283,7 @@ private function getSigner()
275283

276284
/**
277285
* 是否注入用户对象.
286+
* @return boolean
278287
*/
279288
public function injectUser()
280289
{
@@ -300,16 +309,21 @@ public function user()
300309
{
301310
$uid = $this->token->getClaim($this->ssoKey());
302311
if ($uid) {
303-
$className = $this->options['user_model'];
304-
if (empty($className)) {
312+
$namespace = $this->options['user_model'];
313+
if (empty($namespace)) {
305314
throw new Exception('用户模型文件未配置.');
306315
}
307-
if (!class_exists($className)) {
308-
throw new Exception('用户模型文件未找到.');
309-
}
310-
$this->user = $className::find($uid);
316+
317+
$r = new \ReflectionClass($namespace);
318+
$model = $r->newInstance();
319+
$this->user = $model->find($uid);
311320
}
312321

313322
return $this->user;
314323
}
324+
325+
public function getClaims()
326+
{
327+
return $this->token->getClaims();
328+
}
315329
}

0 commit comments

Comments
 (0)