TP5 集成JWT认证

一、使用composer安装jwt  

composer require firebase/php-jwt

TP5 集成JWT认证

安装完成后vendor 会出现firebase 目录文件,这就是我们需要用到的jwt 源文件。 

TP5 集成JWT认证

 

二、jwt配置文件 

TP5 集成JWT认证

key可以自定义配置, 放在config目录里便于统一更改。

 

三、项目中使用jwt

编写生成token方法   

/**
 * Notice:获取jwt的token信息
 * Date  :2019/3/12
 */
public static function getJwtToken($userId,$mobile)
{
    $key     = config('jwt.key');
    $jwtData = [
        'lat' => config('jwt.lat'),
        'nbf' => config('jwt.nbf'),
        'exp' => config('jwt.exp'),
        'uid' => $userId,
        'mobile' => $mobile, //可以加入自己想要获得的用户信息参数
    ];

    $jwtToken = JWT::encode($jwtData, $key);

    return $jwtToken;

}

验证token  获取信息方法 

 

public static function checkJwtToken($token)
{
    $key  = config('jwt.key');
    $info = JWT::decode($token, $key,['HS256']);
    return $info;
}

 通过url来获取token

TP5 集成JWT认证

 得到token

TP5 集成JWT认证

 将token带入,来获取用户信息

TP5 集成JWT认证

TP5 集成JWT认证

可以获取到uid 和mobile 信息。 

 

注: 中间有出现个bug

TP5 集成JWT认证

经查看jwt.php 源码发现decode 方法 $allowed_algs参数 为空数组   

TP5 集成JWT认证

打印$header->algs 发现值为HS256 ,

TP5 集成JWT认证

jwt文件在encode时,有默认给值 $alg =Hs256  在decode 时 去默认为空数组,我们需要在调用的时候 加入值就可以运行了如图

 

TP5 集成JWT认证

ok   ,记录到这。