Heim >Backend-Entwicklung >PHP-Tutorial >PHP HyperF -> Firebase JWT

PHP HyperF -> Firebase JWT

DDD
DDDOriginal
2024-12-11 09:36:10195Durchsuche

PHP HyperF -> Firebase JWT Firebase JWT" />

HyperF - Projekt

Einfaches System zur Validierung von JWT-Tokens und zur Gewährleistung der Authentizität und Integrität bei Authentifizierungsprozessen.

Erstellen – Projekt

composer create-project hyperf/hyperf-skeleton "project"

Installieren – Beobachter

composer require hyperf/watcher --dev

Installieren – Firebase JWT

composer require firebase/php-jwt

Server – Starten

cd project ;
php bin/hyperf.php server:watch ;

HyperF - APP

APP – Umgebung

JWT_KEY="***"

Pfad: /project/.env

APP - Router

Router::addRoute(['GET', 'POST'], '/generate', 'App\Controller\ControllerJWT@generate');
Router::addRoute(['GET', 'POST'], '/decode', 'App\Controller\ControllerJWT@decode');

Pfad: /project/config/routes.php

APP - Controller

namespace App\Controller;

use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Contract\ResponseInterface;

use function Hyperf\Support\env;

use Ramsey\Uuid\Uuid;

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

class ControllerJWT
{
    #[Inject]
    protected RequestInterface $request;

    #[Inject]
    protected ResponseInterface $response;

    protected $jwt_key;

    public function __construct()
    {
        $this->jwt_key=env('JWT_KEY', '***');
    }

    public function generate()
    {
        $payload=[
            'uuid'=>Uuid::uuid4()->toString(),
            'token'=>sha1(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyz')),
        ];
        $token=JWT::encode($payload, $this->jwt_key, 'HS256');
        return [
            'payload'=>$payload,
            'token'=>$token,
        ];
    }

    public function decode()
    {
        $token=$this->request->getHeader('Authorization')[0] ?? '';
        $token=str_replace('Bearer ', '', $token);
        try {
            $decode=JWT::decode($token, new Key($this->jwt_key, 'HS256'));
        } catch (\Exception $e){
            return $this->response->withStatus(401)->json(['token'=>'invalid']);
        }
        return [
            'token'=>$token,
            'decode'=>$decode,
        ];
    }

}

Pfad: /project/app/Controller/ControllerJWT.php

Ausführen

GET – Token generieren

curl "http://127.0.0.1:9501/generate"

Response:
{
    "payload": {
        "uuid": "...0123",
        "token": "***"
    },
    "token": "***"
}

GET – Token dekodieren

curl "http://127.0.0.1:9501/decode" -H "Authorization: Bearer %token%"

Response:
{
    "token": "***",
    "decode": {
        "uuid": "...0123",
        "token": "***"
    }
}

https://github.com/thiagoeti/php-hyperf-firebase-jwt

Das obige ist der detaillierte Inhalt vonPHP HyperF -> Firebase JWT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn