首页 > 其他 > 详细

JWT使用

时间:2019-05-29 14:42:54      阅读:94      评论:0      收藏:0      [点我收藏+]

JWT使用

标签(空格分隔): php

安装

composer require lcobucci/jwt

使用

技术分享图片
技术分享图片
技术分享图片
技术分享图片

<?php
namespace app\common\auth;

use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\ValidationData;

class JwtAuth
{
private static $instance;

private $token;

private $decodeToken;

private $iis = ‘web.tp5.cn‘;

private $aud = ‘web.tp5.cn‘;

private $uid;

private $configId;

private $secret = ‘web.tp5.cn‘;

private function __construct() {}

public static function getInstance()
{
    if (!self::$instance) self::$instance = new self();
    return self::$instance;
}

private function __clone() {}

public function setUid($uid)
{
    $this->uid = $uid;
    return $this;
}

public function setConfigId($configId)
{
    $this->configId = $configId;
    return $this;
}

public function getToken()
{
    return (string)$this->token;
}

public function setToken($token)
{
    $this->token = $token;
    return $this;
}

public function encode()
{
    $time = time();
    $this->token = (new Builder())->setHeader(‘alg‘, ‘HS256‘)
            ->setIssuedAt($this->iis)
            ->setAudience($this->aud)
            ->setIssuedAt($time)
            ->setExpiration($time + 120)
            ->set(‘uid‘, $this->uid)
            ->set(‘configId‘, $this->configId)
            ->sign(new Sha256(), $this->secret)
            ->getToken();
    return $this;
}

public function decode()
{
    if (!$this->decodeToken) {
        $this->decodeToken = (new Parser())->parse((string) $this->token);
        $this->uid = $this->decodeToken->getClaim(‘uid‘);
        $this->configId = $this->decodeToken->getClaim(‘configId‘);
    }
    return $this->decodeToken;
}

public function verify()
{
    return $this->decode()->verify(new Sha256(), $this->secret);
}

public function validate()
{
    $data = new ValidationData();
    $data->setIssuer($this->iis);
    $data->setAudience($this->aud);
    return $this->decode()->validate($data);
}

JWT使用

原文:https://www.cnblogs.com/yanweifeng/p/10943705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!