QThans / jwt-auth

JSON Web Token Authentication for Thinkphp
MIT License
146 stars 31 forks source link

使用JWTAuthAndRefresh中间件在Token过期后如何获取Payload信息 #7

Closed tyson239 closed 4 years ago

tyson239 commented 4 years ago

我通过自己写中间件,置于此项目提供的JWTAuth中间件后,使用getPayload()来把payload写到$request里来让控制器获取payload里的数据。

<?php
namespace app\middleware;
use thans\jwt\facade\JWTAuth;

class Auth
{
    public function handle($request, \Closure $next, $name)
    {
        $payload = JWTAuth::getPayload();
        if(empty($payload['sid']) || empty($payload['uid'])) return json(['code' => 1, 'msg' => '登录态超时']);
        $jwt_array = [];
        foreach($payload as $val){
            $jwt_array[$val->getName()] = $val->getValue();
        }
        $request->jwt = $jwt_array;
        return $next($request);
    }
}

但如果使用JWTAuthAndRefresh这个中间件,在token过期后,getPayload()也会报token过期的错误,以至于无法获取到payload信息,请问这种情况该如何处理呢?

QThans commented 4 years ago

刚看了下,之前没有考虑这个问题。没有对应的方法。 use Lcobucci\JWT\Parser;

$P = new Parser(); dump($P->parse($token)->getClaims());

这样,$token传字符串

tyson239 commented 4 years ago

好的,谢谢