JWT token在活跃期间

// 路由
$api->group(['middleware'=>jwt.auth], function ($api){
            $api->get('user/me','AuthenticateController@getAuthenticatedUser');
});
// 配置
'ttl' => 1,
'refresh_ttl' => 2,
// 版本
"tymon/jwt-auth": "0.5.*"

2分钟生命周期内,用户在一分半的时候如何自动获取新的token或是自动用旧的token去获取新的token有这种操作吗?

JellyBool

使用 jwt.refresh 的 middleware 就可以了吧

假如_丶 回复 JellyBool

jwt.refresh返回的tokenHandler里…这个测试出来了,但是前端如果一个页面出现多个自动刷新(请求),就会出现一个账号多次请求新的token,这么写不是很友好啊…很容易崩溃的吧…

假如_丶 回复 JellyBool

我把GetUserFromTokenhandle修改了,但是提示token_invalid

public function handle($request, \Closure $next)
    {
        $expired = false;
        $user = null;

        if (! $token = $this->auth->setRequest($request)->getToken()) {
            return $this->respond('tymon.jwt.absent', 'token_not_provided', 400);
        }

        try {
            $user = $this->auth->authenticate($token);
        } catch (TokenExpiredException $e) {
            // token 期满
            // return $this->respond('tymon.jwt.expired', 'token_expired', $e->getStatusCode(), [$e]);
            $expired = true;
        } catch (JWTException $e) {
            // token 无效
            return $this->respond('tymon.jwt.invalid', 'token_invalid', $e->getStatusCode(), [$e]);
        }

        if ($expired) {
            try {
                $newToken = $this->auth->setRequest($request)->parseToken()->refresh();
                $user = $this->auth->authenticate($newToken);
            } catch (TokenExpiredException $e) {
                return $this->respond('tymon.jwt.expired', 'token_expired', $e->getStatusCode(), [$e]);
            } catch (JWTException $e) {
                return $this->respond('tymon.jwt.invalid', 'token_invalid', $e->getStatusCode(), [$e]);
            }
            // send the refreshed token back to the client
            $request->headers->set('Authorization', 'Bearer '.$newToken);
        }

        if (! $user) {
            return $this->respond('tymon.jwt.user_not_found', 'user_not_found', 404);
        }
        $this->events->fire('tymon.jwt.valid', $user);

        return $next($request);
    }
Mango

0.5的版本有点坑。
1分半的时候去refresh都提示 expired。

考虑升级1.0beta3吧