在前端开发中,授权认证是必不可少的一部分,而基于 JSON Web Token(JWT)的授权认证方案已经成为当前最流行和安全的方案之一。Express.js 是一个非常流行的 Node.js web 框架,本文将介绍如何在 Express.js 中实现 JWT 授权认证的方法,并提供示例代码和指导意义。
什么是 JSON Web Token(JWT)?
JSON Web Token(JWT)是一种基于 Json 的安全令牌。使用 JWT,可以将一个用户的身份信息存储在一个经过签名的、面向用户的令牌中,使用这个令牌,可以验证用户的身份,并保护用户的数据。JWT 使用了多个安全性措施来防止伪造、篡改、窃取等攻击。常常用于分布式系统中的用户认证、授权。
在 Express.js 中实现 JWT 授权认证,需要执行以下步骤:
1. 安装 jsonwebtoken 模块
需要先安装 Node.js jsonwebtoken 模块来帮助生成和解码 JWT。
--- ------- ------------
2. 引入 jsonwebtoken 模块
需要在 Express.js 代码中引入 jsonwebtoken 模块。
----- --- - ------------------------
3. 创建用于验证授权的中间件
需要创建一个中间件函数,用于检查是否携带了有效的 JWT。可以将此功能封装在一个单独的模块中,以供在应用程序中的任何路由中使用。
-- ------- ----- --- - ------------------------ ----- --------- - -------------- -------------- - ------------- ---- ----- - ----- ----- - ------------------------- -- -------- ------ ---------------------- ------ ------- -------- --- --- - ----- -------- - ----------------- ----------- -------- - --------- ------- - ----- ----- - ---------------------- ------ -------- ------- --- - -
以上代码首先从请求头中获取名为 auth-token 的 JWT,然后使用 jsonwebtoken 模块中的 verify
方法来验证 JWT 是否有效。如果验证通过,将 req.user 设置为用户名,以便在后续的路由处理中使用。如果验证失败,将返回 400 响应以告知客户端 JWT 无效。
4. 创建用于登录和生成 JWT 的路由
需要创建一个用于登录和生成 JWT 的路由。该路由生成 JWT 并将其作为响应的一部分返回客户端。
-- -------- ----- ------- - ------------------- ----- --- - ------------------------ ----- ------ - ----------------- ----- --------- - -------------- ---------------- ----- ---- -- - ----- - --------- -------- - - --------- -- ----------- - ------ ---------------------- ------ -------- ---------- --- - -- --------- --- --------- - ------ ---------------------- ------ -------- ---------- --- - ----- ----- - ---------- -------- -- ----------- ---------- ----- --- --- -------------- - -------
以上代码首先从请求体中获取用户名和密码。如果用户名或密码无效,则返回 400 响应。如果用户名和密码有效,则使用 jsonwebtoken 模块中的 sign
方法生成 JWT,并作为响应的一部分返回给客户端。
5. 使用 auth 中间件保护需要授权访问的路由
在应用程序中,当需要保护某些路由时,可以使用 auth 中间件函数来检查是否携带了有效的 JWT。
----- ------- - ------------------- ----- ------ - ----------------- ----- ---- - ------------------ --------------- ----- ----- ---- -- - ---------- -------- -------- ---------------------- --- --- -------------- - -------
以上代码将 auth 中间件传递给路由,以检测 JWT 是否有效。如果有效,路由将返回欢迎消息和用户名。
总结
通过上述步骤,我们可以在 Express.js 应用程序中实现 JWT 授权认证。在实际开发中,可以将与 JWT 相关的代码封装成单独的模块,并在应用程序的其他部分中重复使用。JWT 授权认证方案是一种安全且快速的方案,可以帮助开发者更好地保护应用程序。
示例代码可以在 Github 上获取:https://github.com/JoannaShepherd/express-jwt-authentication
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6653fc6bd3423812e488ef09