login每天学习一点点,每天进步一点点.
当前位置:首页 >> thinkphp JWT

thinkphp JWT

2018-07-31 11:17:40  |  分类: Thinkphp |  标签: 阅读(158)评论(0)

文档及源码地址

https://github.com/lcobucci/jwt/tree/3.2


use Lcobucci\JWT\Parser;

use Lcobucci\JWT\Builder;

use Lcobucci\JWT\Signer\Hmac\Sha256;

use Lcobucci\JWT\ValidationData;



public function index(){

$builder = new Builder();

$signer  = new Sha256();

// 设置发行人

$builder->setIssuer('http://example.com'); 

// 设置接收人

$builder->setAudience('http://example.org'); 

// 对当前token设置的标识

$builder->setId('4f1g23a12aa', true); 

// 设置生成token的时间

$builder->setIssuedAt(time()); 

// 设置在6秒内该token无法使用

$builder->setNotBefore(time() + 5); 

// 设置过期时间

$builder->setExpiration(time() + 2592000); 

// 给token设置一个id  (设置自定义参数)

$builder->set('uid', 1); 

$builder->set('refresh_time', time() + 2592000); 

// 对上面的信息使用sha256算法签名

$builder->sign($signer, '签名key');

// 获取生成的token

$token = $builder->getToken();

$token = (string)$token;

dump($token);

// echo($token);

}


public function aa(){

// Readme   https://github.com/lcobucci/jwt/tree/3.2

// $token = isset($_SERVER['HTTP_AUTHORIZATION']) ? $_SERVER['HTTP_AUTHORIZATION'] : '';

$token = '生成的token';

if (!$token) {

    $this->invalidToken('Invalid token');

}


try {

$parse = (new Parser())->parse($token);

$signer = new Sha256();


$data = new ValidationData();

$data->setIssuer('http://example.com');

$data->setAudience('http://example.org');

$data->setId('4f1g23a12aa');

//验证token合法性

if (!$parse->verify($signer, '签名key')) {

        $this->invalidToken('Invalid token');

    }


    // $exptime = $parse->getClaim('exp');

    //iss发行人

    //aud接收人

    //jti标识

    //iat生成时间

    //nbf生效时间

    //exp过期时间


    //验证令牌有效性

    if($parse->validate($data)){

    $this->invalidToken('Token ok!!!');

    }


    //验证是否已经过期

    if ($parse->isExpired()) {

        $this->invalidToken('Token expired');

    }


    echo('ooo');

    } catch (Exception $e) {

    //var_dump($e->getMessage());

    $this->invalidToken('Invalid token');

}

}


public function invalidToken($msg) {

    header('HTTP/1.1 401 Unauthorized');

    exit($msg);

}


上一篇:ubuntu使用nmap查询端口 下一篇:ThinkPHP5 的视图$view->fetch()和$view->display()的区别

猜你喜欢

发表评论:

0.071748s