日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

如何使用Hyperf框架進行JWT認證

引言:
Hyperf是一款基于Swoole的高性能協程框架,提供了豐富的功能和靈活的擴展性。JWT(JSON Web Token)是一種用于認證和傳輸信息的開放標準。在本文中,我們將介紹如何在Hyperf框架中使用JWT認證,并提供具體的代碼示例。

一、安裝依賴包
首先,我們需要安裝hyperf/jwt和lcobucci/jwt依賴包。可以通過Composer進行安裝,打開終端運行以下命令:

composer require hyperf/jwt lcobucci/jwt

登錄后復制

二、配置認證信息
在Hyperf框架中,我們需要配置JWT認證所需的相關信息。打開config/autoload/jwt.php文件,添加如下配置項:

<?php

return [
    'default' => [
        'valid_seconds' => env('JWT_VALID_SECONDS', 3600), // Token有效期
        'secret' => env('JWT_SECRET', 'your-secret-key'), // 對稱加密密鑰
        'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), // Token刷新有效期
        'password_key' => env('JWT_PASSWORD_KEY', 'password'), // 密碼字段名稱
        'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), // Token黑名單啟用
        'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 60), // Token寬限期
        'claim' => [], // 自定義Claims
    ],
];

登錄后復制

三、生成和解析JWT Token
首先,我們需要生成JWT Token。在控制器中引入HyperfJwtJwt類,并通過make()方法生成Token。示例代碼如下:

<?php

declare(strict_types=1);

namespace AppController;

use HyperfDiAnnotationInject;
use PsrHttpMessageResponseInterface;

class AuthController extends AbstractController
{
    /**
     * @Inject
     * @var HyperfJwtJwt
     */
    private $jwt;

    public function login(): ResponseInterface
    {
        // 對用戶進行驗證,驗證通過后生成Token
        $userId = 1;
        $token = $this->jwt->make(['user_id' => $userId]);

        return $this->response->json([
            'token' => $token->toString(),
            'expires_at' => $token->getClaim('exp'),
        ]);
    }
}

登錄后復制

接下來,我們需要在中間件中驗證JWT Token并解析出用戶信息。在中間件中引入HyperfJwtMiddlewareJwtMiddleware類,并使用handle()方法進行驗證和解析。示例代碼如下:

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfDiAnnotationInject;
use HyperfHttpServerContractRequestInterface;
use HyperfHttpServerContractResponseInterface as HttpResponse;
use HyperfUtilsContext;
use HyperfUtilsStr;
use HyperfJwtExceptionTokenValidException;
use HyperfJwtJwtInterface;
use PsrContainerContainerInterface;

class JwtMiddleware
{
    /**
     * @Inject
     * @var HyperfJwtJwt
     */
    private $jwt;

    /**
     * @var JwtInterface
     */
    private $jwtFactory;

    /**
     * @var RequestInterface
     */
    private $request;

    /**
     * @var HttpResponse
     */
    private $response;

    public function __construct(ContainerInterface $container, JwtInterface $jwt, RequestInterface $request, HttpResponse $response)
    {
        $this->jwtFactory = $jwt;
        $this->request = $request;
        $this->response = $response;
    }

    public function handle($request, Closure $next)
    {
        $token = Str::replaceFirst('Bearer ', '', $this->request->header('Authorization')); // 從Header中獲取Token
        if (empty($token)) {
            throw new TokenValidException('Token not provided');
        }

        try {
            $token = $this->jwtFactory->parse($token); // 解析Token

            $claims = $token->claims(); // 獲取Token中的聲明
            Context::set('user_id', $claims->get('user_id')); // 設置用戶ID到上下文
        } catch (TokenValidException $e) {
            throw new TokenValidException('Invalid token', $e->getCode(), $e);
        }

        return $next($request);
    }
}

登錄后復制

四、使用中間件進行認證
在路由中使用中間件進行JWT認證。打開config/routes.php文件,添加如下路由和中間件配置項:

<?php

use AppMiddlewareJwtMiddleware;

Router::addGroup('/api', function () {
    Router::post('/login', 'AppControllerAuthController@login');

    // 需要認證的路由
    Router::addGroup('/auth', function () {
        Router::get('/info', 'AppControllerAuthController@info');
    }, ['middleware' => [JwtMiddleware::class]]);
});

登錄后復制

在上面的示例中,AppControllerAuthController@info是需要進行認證的接口。只有在攜帶有效的JWT Token時,才能成功訪問該接口。

結論:
本文介紹了如何使用Hyperf框架進行JWT認證,并提供了相關的配置和代碼示例。通過JWT認證,我們可以在Hyperf框架中實現較高的安全性和用戶驗證功能。希望本文對你在使用Hyperf框架進行JWT認證有所幫助。

以上就是如何使用Hyperf框架進行JWT認證的詳細內容,更多請關注www.92cms.cn其它相關文章!

分享到:
標簽:Hyperf框架 JWT認證 使用
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定