推荐答案
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- --- ----- ---------- - ----------------------- -- -- ----------- -- ---------------------------- - ------- ------------- -- -- --- -- --- -- ---------- --- ---------------------- ----- --------- ------ -- - ----- - --------- -------- - - ------------- -- ---------- -- --------- --- ------- -- -------- --- ----------- - ----- ----- - ------------------ -------- --- ------ - ----- -- - ---- - ---------------------- -------- -------- ------------ --- - --- -- ------ --- ----- ------------------------- - ----------- ------------------- -- ----- --------- ------ -- - ------ ------------- -- ------ --- -- --- -- ----- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ------------------------ --------- -- ------------------------ ---
本题详细解读
1. 安装 fastify-jwt 插件
首先,你需要安装 fastify-jwt
插件。可以通过以下命令安装:
npm install fastify-jwt
2. 注册 fastify-jwt 插件
在 Fastify 应用中,你需要注册 fastify-jwt
插件,并提供一个密钥(secret
)。这个密钥将用于签名和验证 JWT。
fastify.register(fastifyJwt, { secret: 'supersecret' // 设置 JWT 密钥 });
3. 生成 JWT
在 /login
路由中,你可以通过 fastify.jwt.sign
方法生成 JWT。这个方法接受一个对象作为参数,通常是用户的信息(如用户名、用户ID等),并返回一个签名的 JWT。
-- -------------------- ---- ------- ---------------------- ----- --------- ------ -- - ----- - --------- -------- - - ------------- -- ---------- -- --------- --- ------- -- -------- --- ----------- - ----- ----- - ------------------ -------- --- ------ - ----- -- - ---- - ---------------------- -------- -------- ------------ --- - ---
4. 验证 JWT
在需要认证的路由中,你可以使用 fastify.jwtVerify
作为 preHandler
钩子来验证 JWT。如果 JWT 有效,request.user
将包含解码后的 JWT 数据。
fastify.get('/protected', { preHandler: [fastify.jwtVerify] }, async (request, reply) => { return request.user; // 返回解码后的 JWT 数据 });
5. 启动服务器
最后,启动 Fastify 服务器,监听指定的端口。
fastify.listen(3000, (err) => { if (err) { fastify.log.error(err); process.exit(1); } fastify.log.info('Server listening on http://localhost:3000'); });
通过以上步骤,你可以在 Fastify 应用中使用 fastify-jwt
插件来实现 JWT 认证。