ホームページ >ウェブフロントエンド >jsチュートリアル >ブラックリストと Redis を使用した JWT ログアウトの管理: 初心者向けガイド
JWT (JSON Web Token) を使用して安全な API を構築する場合、ユーザーのログアウトの処理は難しい場合があります。 JWT はステートレスであるため、ログアウト後にトークンを無効にするすぐに使用できる方法はありません。そこでブラックリストや Redis などのツールが活躍します。これらの概念に慣れていない場合でも、心配する必要はありません。このガイドでは、すべてを段階的に説明し、実用的なソリューションの実装に役立ちます。
ステートレス システム
JWT
ブラックリストは、無効化されたトークンのリストです。ユーザーがログアウトすると、そのトークンがこのリストに追加されます。リクエストが行われるたびに、サーバーはトークンがブラックリストにあるかどうかを確認します。一致する場合、リクエストは拒否されます。
ブラックリストを実装する手順:
Redis は、高性能のメモリ内キー/値データベースです。以下の理由から、JWT をブラックリストに登録するようなユースケースに最適です。
これらの概念を初めて使用する場合は、単純なメモリ内ソリューションから始めてください。
const blacklist = new Set(); // Add token to blacklist authController.logout = (req, res) => { const token = req.headers.authorization.split(" ")[1]; blacklist.add(token); res.status(200).json({ message: "Logged out successfully" }); }; // Middleware to check token validity middleware.verifyToken = (req, res, next) => { const token = req.headers.authorization.split(" ")[1]; if (blacklist.has(token)) { return res.status(401).json({ message: "Invalid token" }); } next(); };
このアプローチは小規模プロジェクトには機能しますが、制限があります。アプリがスケールする場合は、Redis のようなより堅牢なソリューションが必要になります。
ioredis ライブラリを使用して、Node.js アプリで Redis と対話します。
const blacklist = new Set(); // Add token to blacklist authController.logout = (req, res) => { const token = req.headers.authorization.split(" ")[1]; blacklist.add(token); res.status(200).json({ message: "Logged out successfully" }); }; // Middleware to check token validity middleware.verifyToken = (req, res, next) => { const token = req.headers.authorization.split(" ")[1]; if (blacklist.has(token)) { return res.status(401).json({ message: "Invalid token" }); } next(); };
npm install ioredis
Feature | In-Memory (Set) | Redis |
---|---|---|
Scalability | Limited to a single server | Distributed across servers |
Speed | Very fast | Equally fast |
Persistence | Lost on server restart | Data persists across restarts |
Cleanup | Manual | Automatic with TTL |
インメモリ ソリューションで簡単に始めて、徐々に Redis に移行することで、圧倒されることはありません。コーディングを楽しんでください!
ご質問がある場合、または Redis のセットアップについてサポートが必要な場合は、コメントでお知らせください。 ?
以上がブラックリストと Redis を使用した JWT ログアウトの管理: 初心者向けガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。