JWT(JSON Web Token)是一种无状态的、可扩展的身份验证机制,广泛应用于前后端分离的应用程序中。Fastify 作为一款快速的 Node.js Web 框架,提供了简单易用的插件机制,实现 JWT 鉴权也非常简单。
准备工作
在开始实现 JWT 鉴权前,需要先安装 fastify-jwt
和 jsonwebtoken
插件:
- --- ------- ----------- ------------
生成 JWT
在权限验证成功时,需要生成 JWT。首先在 fastify
实例中注册插件:
----- ------- - -------------------- ----- ---------- - ---------------------- ----- ------ - ---------- -- ---- ------ ---------------------------- - ------ --
在路由处理函数中生成 JWT:
---------------------- ----- --------- ------ -- - ----- - --------- -------- - - ------------ -- ----------- --- ----- ----- - ----- ------------------ -------- -- ------------ ----- -- --
上述代码中,fastify.jwt.sign
方法用于生成 JWT,参数为需要包含在 JWT 中的信息,包括用户名、角色等。
鉴权
在路由处理函数前执行鉴权,判断请求中是否包含有效的 JWT:
-------------------- - ----------- -------------------- -- ----- --------- ------ -- - ----- - -------- - - ------------ -- -- --- ---- -- ------ ----- ---- - ----- ----------------------------------- ---------------- --
上述代码中,fastify.authenticate
是一个 middleware,用于验证请求是否包含有效的 JWT。如果验证成功,request.user
中包含 JWT 中的信息。
实现鉴权的核心代码如下:
----- ------------ - ----- --------- ------ -- - --- - ----- ------------------- - ----- ----- - --------------- - - -------------------------------- -------------
上述代码中,在 Fastify 实例中定义了 authenticate
方法,将其添加到路由处理函数的 preHandler
中,实现对路由的鉴权认证。
示例代码
完整的示例代码如下:
----- ------- - -------------------- ----- ---------- - ---------------------- ----- --- - ----------------------- ----- ----------- - ------------------------ ----- ------ - ---------- ---------------------------- - ------ -- ----- ------------ - ----- --------- ------ -- - --- - ----- ------------------- - ----- ----- - --------------- - - -------------------------------- ------------- ---------------------- ----- --------- ------ -- - ----- - --------- -------- - - ------------ -- ----------- --- ----- ----- - ----- ------------------ -------- -- ------------ ----- -- -- -------------------- - ----------- -------------------- -- ----- --------- ------ -- - ----- - -------- - - ------------ -- -- --- ---- -- ------ ----- ---- - ----- ----------------------------------- ---------------- -- -------------------- ----- -------- -- - -- ----- - ---------------- --------------- - ------------------- --------- -- ------------ --
总结
通过 Fastify 插件机制实现 JWT 鉴权非常简单,只需使用 fastify-jwt
插件即可。在路由处理函数前添加 middleware 实现对请求的鉴权认证。同时,需要注意保护好自定义的 secret
,避免泄露给未授权的人员。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/645c4fb0968c7c53b0ea0900