> 백엔드 개발 > 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 - 앱

앱 - 환경

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿