JWT 認証に ThinkPHP6 を使用するにはどうすればよいですか?
JWT (JSON Web Token) は、JSON オブジェクトをセキュリティ トークンとして使用し、複数のシステム間でユーザー ID 情報を安全に送信する軽量の認証および認可メカニズムです。 ThinkPHP6 は、PHP 言語をベースとした効率的かつ柔軟な MVC フレームワークであり、JWT 認証メカニズムを含む多くの便利なツールと機能を提供します。この記事では、Web アプリケーションのセキュリティと信頼性を確保するための JWT 認証に ThinkPHP6 を使用する方法を紹介します。
- JWT 拡張機能のインストールと構成
まず、アプリケーションに JWT 拡張機能をインストールする必要があります。これは、composer.json ファイルに依存関係を追加することでインストールできます:
{ "require": { "firebase/php-jwt": "^5.0.0" } }
次に、次のコマンドを実行してインストールします:
composer install
インストールが完了したら、次のファイルで JWT を構成する必要があります。設定ファイル。 config ディレクトリに jwt.php ファイルを作成し、次の内容を追加します。
<?php return [ 'key' => 'your-secret-key', 'alg' => 'HS256', 'exp' => 7200, // token过期时间,单位秒 ];
ここで、「key」は JWT トークンの署名キーの生成に使用される文字列、「alg」は JWT 署名アルゴリズムです。名前としては、「HS256」、「HS512」、「RS256」などのアルゴリズムを選択できます。「exp」は、秒単位で計算された JWT トークンの有効期限です。
- JWT 認証コントローラーの実装
次に、JWT 認証を実装するために JWT 認証コントローラーを作成する必要があります。 app/controller ディレクトリに AuthController.php ファイルを作成し、次の内容を追加します。
<?php namespace appcontroller; use FirebaseJWTJWT; use thinkacadeDb; class AuthController { public function login() { //在这里处理用户登陆逻辑 //... //登陆成功后生成JWT token并返回给客户端 $secretKey = config('jwt.key'); // 获取JWT生成签名的密钥 $alg = config('jwt.alg'); // 获取JWT加密算法 $payload = [ 'sub' => $user->id, // 存储用户ID 'exp' => time() + config('jwt.exp'), // 设定过期时间 ]; $jwt = JWT::encode($payload, $secretKey, $alg); // 生成JWT令牌 return ['token' => $jwt]; // 返回JWT Token给客户端 } public function dashboard() { //检查请求中的JWTToken是否有效,并返回用户信息 $jwtToken = request()->header('Authorization'); // 获取JWT Token if (!$jwtToken) { // 如果token不存在,直接返回错误信息 return ['msg' => '未验证身份,请先登录']; } $jwtInfo = JWT::decode($jwtToken, config('jwt.key'), [config('jwt.alg')]); // 使用JWT解密Token $userId = $jwtInfo->sub; // 获取token中存储的用户ID,用来查询用户信息 $user = Db::table('users')->where('id', $userId)->find(); // 查询用户信息 if (!$user) { // 用户不存在,直接返回错误信息 return ['msg' => '用户不存在']; } // 返回用户信息 return ['username' => $user['username'], 'email' => $user['email']]; } }
上記のコントローラー コードでは、2 つの関数を実装しました。1 つはユーザー ログインで、もう 1 つはユーザー情報の取得です。ログイン プロセス中に、JWT トークンが生成され、後続のリクエストでの認証のためにクライアントに返されます。ダッシュボード メソッドでは、リクエストの Authorization ヘッダーに JWT トークンが含まれているかどうかを確認し、JWT を使用してトークンを復号化し、ユーザーの ID が有効かどうかを確認します。
- JWT 認証ミドルウェアの追加
最後に、認証を必要とする API インターフェイスを保護するために、JWT 認証ミドルウェアをアプリケーションに追加する必要があります。 app/middleware ディレクトリに JwtAuth.php ファイルを作成し、次の内容を追加します。
<?php namespace appmiddleware; use FirebaseJWTJWT; use thinkacadeConfig; class JwtAuth { public function handle($request, Closure $next) { //检查请求中的JWTToken是否有效 $jwtToken = $request->header('Authorization'); // 获取JWT Token if (!$jwtToken) { // 如果token不存在,直接返回错误信息 return response(['msg' => '未授权的API请求!'], 401); } try { $jwtInfo = JWT::decode($jwtToken, Config::get('jwt.key'), [Config::get('jwt.alg')]); // 使用JWT解密Token $request->jwtInfo = $jwtInfo; // 将解密后的JWT信息存储在请求对象中,后续控制器可以使用 return $next($request); // 继续后续请求处理 } catch (Exception $e) { // JWT Token过期或者解密失败,返回错误信息 return response(['msg' => 'JWT Token无效或已过期!'], 401); } } }
上記のコードでは、リクエストの Authorization ヘッダーに有効な JWT トークンが含まれているかどうかを確認しました。 JWT トークンが無効であるか期限切れの場合は、Unauthorized HTTP 応答を返します。それ以外の場合は、後続のリクエスト処理を続行し、後続のコントローラーで使用できるように JWT トークンの情報をリクエスト オブジェクトに保存します。
最後に、アプリケーションのルーティングで JWT 認証ミドルウェアを使用して、認証を必要とする API インターフェイスを保護する必要があります。たとえば、次のコードをroutes/api.phpファイルに追加します:
<?php use appmiddlewareJwtAuth; // 需要JWT认证的API接口 Route::get('dashboard', 'AuthController@dashboard')->middleware(JwtAuth::class);
上記のコードでは、JwtAuthミドルウェアを使用してダッシュボードメソッドを保護し、有効なJWTトークンを持つリクエストのみが存在するようにしました。アクセスするには。
結論
この記事では、Web アプリケーションのセキュリティと信頼性を確保するために、JWT 認証に ThinkPHP6 を使用する方法を紹介しました。最初に JWT 拡張機能をインストールして構成し、次に JWT 認証コントローラーと JWT 認証ミドルウェアを実装し、最後にアプリケーションのルーティングで JWT 認証ミドルウェアを使用して、認証を必要とする API インターフェイスを保護しました。これらの手順を通じて、ThinkPHP6 アプリケーションに JWT 認証メカニズムを簡単に実装して、Web アプリケーションのセキュリティと信頼性を確保できます。
以上がJWT 認証に ThinkPHP6 を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件がますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。

ThinkPHP6 と Swoole をベースとした RPC サービスがファイル転送機能を実装 はじめに: インターネットの発展に伴い、ファイル転送は私たちの日常業務においてますます重要になってきています。この記事では、ファイル転送の効率化とセキュリティを向上させるために、ThinkPHP6とSwooleをベースとしたファイル転送機能を実現するRPCサービスの具体的な実装方法を紹介します。 WebフレームワークとしてThinkPHP6を使用し、SwooleのRPC機能を利用してサーバー間のファイル転送を実現します。 1. 環境基準
