PHP HyperF -> Firebase JWT

DDD
リリース: 2024-12-11 09:36:10
オリジナル
266 人が閲覧しました

PHP HyperF -> Firebase JWT Firebase JWT" />

HyperF - プロジェクト

JWT トークンを検証し、認証プロセスの信頼性と整合性を保証するシンプルなシステム。

作成 - プロジェクト

composer create-project hyperf/hyperf-skeleton "project"
ログイン後にコピー

インストール - ウォッチャー

composer require hyperf/watcher --dev
ログイン後にコピー

インストール - Firebase JWT

composer require firebase/php-jwt
ログイン後にコピー

サーバー - 開始

cd project ;
php bin/hyperf.php server:watch ;
ログイン後にコピー

HyperF - アプリ

アプリ - 環境

JWT_KEY="***"
ログイン後にコピー

パス: /project/.env

アプリ - ルーター

Router::addRoute(['GET', 'POST'], '/generate', 'App\Controller\ControllerJWT@generate');
Router::addRoute(['GET', 'POST'], '/decode', 'App\Controller\ControllerJWT@decode');
ログイン後にコピー

パス: /project/config/routes.php

アプリ - コントローラー

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

}
ログイン後にコピー

パス: /project/app/Controller/ControllerJWT.php

実行する

GET - トークンの生成

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

Response:
{
    "payload": {
        "uuid": "...0123",
        "token": "***"
    },
    "token": "***"
}
ログイン後にコピー

GET - デコードトークン

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

以上がPHP HyperF -> Firebase JWTの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート