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

PHP HyperF -> Firebase JWT

DDD
Freigeben: 2024-12-11 09:36:10
Original
208 Leute haben es durchsucht

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"
Nach dem Login kopieren

Installieren – Beobachter

composer require hyperf/watcher --dev
Nach dem Login kopieren

Installieren – Firebase JWT

composer require firebase/php-jwt
Nach dem Login kopieren

Server – Starten

cd project ;
php bin/hyperf.php server:watch ;
Nach dem Login kopieren

HyperF - APP

APP – Umgebung

JWT_KEY="***"
Nach dem Login kopieren

Pfad: /project/.env

APP - Router

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

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,
        ];
    }

}
Nach dem Login kopieren

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": "***"
}
Nach dem Login kopieren

GET – Token dekodieren

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

Response:
{
    "token": "***",
    "decode": {
        "uuid": "...0123",
        "token": "***"
    }
}
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage