首頁 > 後端開發 > php教程 > PHP HyperF -> Firebase JWT

PHP HyperF -> Firebase JWT

DDD
發布: 2024-12-11 09:36:10
原創
199 人瀏覽過

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-APP

APP-環境

JWT_KEY="***"
登入後複製

路徑:/project/.env

APP-路由器

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

路徑:/project/config/routes.php

APP-控制器

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板