altelma/php-jwt

使用HS256和RS256在PHP中创建和验证JWT签名。

v1.1 2019-02-21 09:58 UTC

This package is auto-updated.

Last update: 2024-09-12 19:07:14 UTC


README

JWT

为Laravel的简单JWT

一个简单的库,用于使用HS256和RS256在PHP中创建和验证JWT签名。

设置

  • 运行$ composer require altelma/php-jwt

Laravel

  • (仅适用于Laravel 5.5或更低版本)将提供程序添加到config/app.php
'providers' => [
    Altelma\JWT\JWTServiceProvider::class,
],
  • 运行$ php artisan vendor:publish以发布配置文件config/jwt.php并插入
    • private_key
    • public_key

Lumen

  • 将提供程序添加到bootstrap/app.php
$app->register(Altelma\JWT\JWTServiceProvider::class);
  • vendor/altelma/php-jwt/config/jwt.php复制到config/jwt.php并插入

    • private_key
    • public_key
  • 将配置添加到bootstrap/app.php

$app->configure('jwt');
  • 允许通过外观调用包,取消注释
$app->withFacades();

if (!class_exists('JWT')) {
    class_alias('Altelma\JWT\JWTFacade', 'JWT');
}

基本用法

以下示例用于生成JWT

<?php

namespace App\Http\Controllers;

use GuzzleHttp\Client;

class JwtController extends Controller
{
    private function getJWT()
    {
        $client = new Client();
        $response = $client->post('your_auth_url', [
            'headers' => [
                'Content-Type' => 'application/json',
            ],
            'json' => [
                'email' => 'admin@example.com',
                'password' => 'password'
            ]
        ]);

        $response = json_decode($response->getBody(), true);

        return $response['accesstoken'];
    }

    public function verifyJwt()
    {
        $jwtToken = 'YOUR_JWT_TOKEN';
        $verifyToken = \JWT::verify('sha256', $jwtToken);

        return ['success' => $verifyToken];
    }

    public function genJwt()
    {
        $header = [
            "alg"     => "RS256",
            "typ"     => "JWT"
        ];

        $payload = [
            "sub"        => "465465464646",
            "name"        => "John Doe",
            "admin"        => true
        ];

        return ['success' => true, 'access_token' => \JWT::generate('sha256', $header, $payload)];
    }
}

错误报告

这个包现在并不完美,但我们可以一起改进。如果你发现了任何错误或有任何建议,请发给我或者创建一个新的问题。感谢使用它。