PHP实现JWT lcobucci/jwt生成jwt token

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

1.安装
PHP 5.5+ (v3.2) and PHP 7.1 (v4.x)
OpenSSL Extension
"lcobucci/jwt": "^3.3"

composer require lcobucci/jwt

2. 一些参数说明

iss 【issuer】发布者的url地址

sub 【subject】该JWT所面向的用户,用于处理特定应用,不是常用的字段

aud 【audience】接受者的url地址

exp 【expiration】 该jwt销毁的时间;unix时间戳

nbf 【not before】 该jwt的使用时间不能早于该时间;unix时间戳

iat 【issued at】 该jwt的发布时间;unix 时间戳

jti 【JWT ID】 该jwt的唯一ID编号

3.使用

生成,验证token
namespace App\Common;

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

class Jwt
{
    //私钥,没有私钥不会认证通过
    private $secret = "OOOO_WWW_EE_N__@server.zhang.com^1#096&24%2020";
    //令牌的过期时间
    private $tokenTtl = 60 * 60 * 2;

    //验证token
    public function checkTokenJWT($token)
    {
        try{
            $signer = new Sha256();
            if (!$token) {
                return false;
            }
            $parser = new Parser();
            $parse = $parser->parse($token);
            先验证私钥
            if ($parse->verify($signer, $this->secret) === false) {
                return false;
            } else {
                return [
                    'user_id' => $parse->getClaim("user_id"),
                    'user_name' => $parse->getClaim('user_name')
                ];
            }
        }catch (InvalidArgumentException $e){
            return false;
        }
    }

    //生成token
    public function newTokenJWT($userId)
    {
        $builder = new Builder();
        $signer = new Sha256();
        //发布端url颁发者
        $builder->setIssuer("server.owenzhang.cn");
        //请求端URL访问群体
        $builder->setAudience("owenzhang-user-token");
        //唯一的jwt id作为头项复制
        $builder->setId("fu51server", true);
        //配置颁发令牌的时间
        $builder->setIssuedAt(time());
        //令牌可以使用的时间
        $builder->setNotBefore(time() + 5);
        //令牌的过期时间
        $builder->setExpiration(time() + $this->tokenTtl);
        //配置一个名为“user_id”的新声明
        $builder->set("user_id", $userId);
        //使用“$this->secret”作为密钥创建签名
        $builder->sign($signer, $this->secret);
        //生成的令牌
        $token = $builder->getToken();
        $tokenStr = (string)$token;

        return $tokenStr;
    }

}

Buy me a cup of coffee :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装lcobucci/jwt库是为了在Laravel 5.8项目中使用JWT(JSON Web Token)进行身份验证和授权。下面是一个简单的封装示例代码: 首先,在项目中安装lcobucci/jwt库,可以通过composer命令来进行安装: ```shell $ composer require lcobucci/jwt "^3.4" ``` 然后,创建一个TestController类,并引入必要的命名空间和类: ```php <?php namespace App\Http\Controllers; use App\Tools\Service; use Illuminate\Http\Request; class TestController extends Controller { public function token() { // 生成token $token = Service::createToken(); // 验证token try { Service::validationToken($token); $json = [ "code" => 200, "message" => "Token验证通过", "success" => "ok" ]; return $json; } catch(\Exception $exception) { var_dump($exception->getMessage()); } } } ``` 在上述代码中,首先生成了一个token,然后通过Service::validationToken()方法来验证token的有效性。如果验证通过,返回一个包含成功信息的JSON数据,否则输出异常信息。 这样,你就可以在Laravel 5.8中使用lcobucci/jwt库进行JWT的封装和使用了。<span class="em">1</span> #### 引用[.reference_title] - *1* [laravel包lcobucci/jwt](https://blog.csdn.net/weiguang102/article/details/120169317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值