PHP code example of jzh / jwt

1. Go to this page and download the library: Download jzh/jwt library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jzh / jwt example snippets


composer 

// guard 角色配置
// jwt jwt参数配置

// 配置示例(根据自己真实情况 user一定要存在 因为默认就是user)
    'guard'  => [
        'user' => [
            'key'   => 'uid',    //对应表主键
            'limit' => 1,       //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
            'model' => function ($uid) {
                // ThinkORM
                return \think\facade\Db::table('core_user')
                    ->field('uid,account,create_time')
                    ->where('uid', $uid)
                    ->find();

                // LaravelORM
                // return \support\Db::table('resty_user')
                //    ->where('id', $uid)
                //    ->select('id','email','mobile','create_time')
                //    ->first();
            }
        ],
        'admin'=>[
            'key'   => 'id',    //对应表主键
            'limit' => -1,       //-1为不限制终端数量 0为只支持一个终端在线 大于0为同一账号同终端支持数量 建议设置为1 则同一账号同终端在线1个
            'model' => function ($id) {
                // ThinkORM
                return \think\facade\Db::table('admin')
                    ->field('id,account,create_time')
                    ->where('id', $id)
                    ->find();

                // LaravelORM
                // return \support\Db::table('resty_user')
                //    ->where('id', $uid)
                //    ->select('id','email','mobile','create_time')
                //    ->first();
            }
        ]       
    ],
    'jwt'    => [
        // 算法类型 ES256、HS256、HS384、HS512、RS256、RS384、RS512
        'algorithms'          => 'HS256',
        // access令牌秘钥
        'access_secret_key'   => '',
        // access令牌过期时间,单位秒。默认 2 小时
        'access_exp'          => 7200,
        // refresh令牌秘钥
        'refresh_secret_key'  => '',
        // refresh令牌过期时间,单位秒。默认 7 天
        'refresh_exp'         => 604800,
        // refresh 令牌是否禁用,默认不禁用
        'refresh_disable'     => false,
        // 缓存令牌前缀
        'redis_pre'           => 'JZH:JWT:TOKEN:',
        // 令牌签发者
        'iss'                 => 'webman',
        /**
         * access令牌 RS256 私钥
         * 生成RSA私钥(Linux系统):openssl genrsa -out access_private_key.key 1024 (2048)
         */
        'access_private_key'  => '',
        /**
         * access令牌 RS256 公钥
         * 生成RSA公钥(Linux系统):openssl rsa -in access_private_key.key -pubout -out access_public_key.key
         */
        'access_public_key'   => '',

        /**
         * refresh令牌 RS256 私钥
         * 生成RSA私钥(Linux系统):openssl genrsa -out refresh_private_key.key 1024 (2048)
         */
        'refresh_private_key' => '',
        /**
         * refresh令牌 RS256 公钥
         * 生成RSA公钥(Linux系统):openssl rsa -in refresh_private_key.key -pubout -out refresh_public_key.key
         */
        'refresh_public_key'  => '',
    ]

$guard = 'admin'; // 默认user 
\Jzh\Jwt\Facade\JWT::guard('admin');

$user = [
    'id'  => id, // 这里必须是一个全局抽象唯一id
    'xx'  => 'xx',
    'xx1' => 'xx1'
];
$token = \Jzh\Jwt\Facade\JWT::generateToken($user);
var_dump(json_encode($token));

// guard 指定 角色;比如 user 用户,admin 用户
$token = \Jzh\Jwt\Facade\JWT::guard('admin')->generateToken($user);

$all = false; //false 退出当前用户;true 退出所有当前用户终端;默认 false
\Jzh\Jwt\Facade\JWT::logout($all);
\Jzh\Jwt\Facade\JWT::guard('admin')->logout(); //管理员退出

// 获取user用户
$uid = \Jzh\Jwt\Facade\JWT::getCurrentId();

// 获取admin用户
$uid = \Jzh\Jwt\Facade\JWT::guard('admin')->getCurrentId();

$cache = false; //false 获取缓存中的数据  true 获取数据库中的数据
$userInfo = \Jzh\Jwt\Facade\JWT::user($cache);

// 获取admin用户
$userInfo = \Jzh\Jwt\Facade\JWT::guard('admin')->user($cache);

$info = \Jzh\Jwt\Facade\JWT::getExtend();

// 获取admin用户
$info = \Jzh\Jwt\Facade\JWT::guard('admin')->getExtend();

$uid = \Jzh\Jwt\Facade\JWT::getExtendVal('uid');

// 获取admin用户
$uid = \Jzh\Jwt\Facade\JWT::guard('admin')->getExtendVal('uid');

$info = \Jzh\Jwt\Facade\JWT::refreshToken();
{
    "access_token_expires": 36000,
    "access_token": "eyJ0eXAiOiJAUR-Gqtnk9LUPO8IDrLK7tjCwQZ7CI...",
}

// 获取admin用户
$info = \Jzh\Jwt\Facade\JWT::guard('admin')->refreshToken();

$exp = \Jzh\Jwt\Facade\JWT::getTokenExp();

// 获取admin用户
$exp = \Jzh\Jwt\Facade\JWT::guard('admin')->getTokenExp();

// 返回 jwt 解密的信息
$info = \Jzh\Jwt\Facade\JWT::verify();

// 获取admin用户
$info = \Jzh\Jwt\Facade\JWT::guard('admin')->verify();