什么是 JWT 鉴权
JWT(JSON Web Token)是一种用于身份验证的开放标准,它可以在网络应用程序之间安全地传输声明。JWT 由三部分组成,分别是 Header、Payload 和 Signature。其中 Header 和 Payload 部分是 Base64 编码的 JSON 对象,Signature 部分是使用 Header、Payload 和密钥进行加密生成的字符串。
在前后端分离的应用中,前端通常会使用 JWT 来进行用户身份验证。当用户登录时,后端会生成一个 JWT 并返回给前端,前端将 JWT 存储在本地,每次请求时将 JWT 放入请求 Header 中,后端会根据 JWT 中的信息进行身份验证。
1. 安装依赖
首先需要安装以下依赖:
- express:用于构建 web 应用程序
- mongoose:用于操作 MongoDB 数据库
- jsonwebtoken:用于生成和验证 JWT
可以使用以下命令进行安装:
npm install express mongoose jsonwebtoken
2. 构建用户模型
在 MongoDB 数据库中创建一个名为 users
的集合,用于存储用户数据。然后可以使用 Mongoose 构建用户模型,代码如下:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ----------------- --------- ------- --------- ------- ------ ------- --- ----- ---- - ---------------------- ------------ -------------- - -----
3. 注册和登录接口
在 Express 中编写注册和登录接口,代码如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ------------------ ----- --- - ---------- ------------------------ ----- --------- - ---------------- -- ---- --------------------- ----- ----- ---- -- - ----- - --------- --------- ----- - - --------- --- - ----- ---- - --- ------ --------- --------- ----- --- ----- ------------ ----------------- - ----- ------- - ------------------------------------ - --- -- ---- ------------------ ----- ----- ---- -- - ----- - --------- -------- - - --------- --- - ----- ---- - ----- -------------- -------- --- -- ------ -- ------------- --- --------- - ----- --- ------------------ - ----- ----- - ---------- -------- -- ---------- - ---------- ---- --- ---------------- - ----- ------- - ------------------------------------ - --- ---------------- -- -- ------------------- -----------
4. 鉴权中间件
编写一个鉴权中间件,用于验证请求中的 JWT 是否有效。代码如下:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- --------- - ---------------- ----- -------------- - ----- ---- ----- -- - ----- ----- - -------------------------- -- -------- - ------ ---------------------------- - --- - ----- ------- - ----------------- ----------- -------- - -------- ------- - ----- ------- - ---------------------------- - -- -------------- - ---------------
5. 鉴权保护的接口
在 Express 中编写一个需要鉴权保护的接口,代码如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ------------------ ----- -------------- - ------------------ ----- --- - ---------- ------------------------ -- ------- -- ------- ------------------- --------------- ----- ----- ---- -- - ----- - -------- - - --------- --- - ----- ---- - ----- -------------- -------- --- --------------- - ----- ------- - ------------------------------------ - --- ---------------- -- -- ------------------- -----------
总结
本文介绍了如何使用 Mongoose 和 Express 集成 JWT 鉴权。需要注意的是,JWT 只是一种验证方式,不能替代 HTTPS。在实际开发中,需要根据具体情况选择适合的验证方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65091a6995b1f8cacd3e4c01