1. 什么是 passport-jwt
passport-jwt 是一个使用 JSON Web Token(JWT)进行身份验证的 Node.js 模块,与 passport 配合使用,提供了用户身份验证和授权约定。
JWT 是一种 URL 安全的字符串,它包含了用户的身份信息和其他元数据,可以在网络中传输和存储。与传统的 Cookie 和 Session 方式不同,JWT 不需要在服务端存储会话状态,可以在客户端上持久化存储。
2. 如何安装和使用 passport-jwt
2.1 安装
npm install passport-jwt
2.2 加载模块和中间件
const passport = require("passport"); const JwtStrategy = require("passport-jwt").Strategy; const ExtractJwt = require("passport-jwt").ExtractJwt;
2.3 配置策略
-- -------------------- ---- ------- ----- ---- - --- ------------------- - ----------------------------------------- ---------------- - ------------------ ------------- --- ----------------- ------------- ----- -- - -- -- ----------- -- -- ------ ------------------ ---------------- ----- ----- -- - -- ----- - ------ --------- ------- - -- ------ - ------ ---------- ------ - ---- - ------ ---------- ------- - --- -- --
2.4 使用策略进行身份验证
定义一个需要身份验证的路由:
const router = express.Router(); router.get( "/profile", passport.authenticate("jwt", { session: false }), (req, res) => { res.send("You are authorized!"); } );
当请求 /profile
路由时,会经过 passport.authenticate("jwt")
中间件,如果用户未登录或者 token 错误,会返回 401 错误,否则返回 200 状态码。
3. 示例代码
完整代码示例:
-- -------------------- ---- ------- -- -- -- --- ------- ------------ -- -- -------- ----- -------- - -------------------- ----- ----------- - --------------------------------- ----- ---------- - ----------------------------------- -- -- ---- ----- ---- - --- ------------------- - ----------------------------------------- ---------------- - ------------------ ------------- --- ----------------- ------------- ----- -- - -- -- ----------- -- -- ------ ------------------ ---------------- ----- ----- -- - -- ----- - ------ --------- ------- - -- ------ - ------ ---------- ------ - ---- - ------ ---------- ------- - --- -- -- -- -- ---------- ----- ------ - ----------------- ----------- ----------- ---------------------------- - -------- ----- --- ----- ---- -- - ------------- --- -------------- - --
4. 结论
本文介绍了如何使用 npm 包 passport-jwt 实现基于 JWT 的用户身份验证和授权,在 Node.js 应用程序中使用 Passport 策略保护路由,并提供详细的使用代码示例,可以参考实际项目中的使用。使用 Passport 作为身份验证和授权中间件,可以帮助开发者更快地构建安全可靠的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/72818