Express-jwt 是一个 Node.js 的 npm 包,可以方便地实现基于 JSON Web Token (JWT) 的身份验证和授权。在本篇文章中,我们将深入了解具体如何使用 Express-jwt 来保护你的前端应用程序。
JWT 概述
JSON Web Token(简称 JWT)是一种开放标准(RFC 7519),用于在各方之间作为 JSON 对象安全地传输信息。它可以通过数字签名来验证数据的完整性,并且同时还可以使用密钥加密数据。JWT 由三个部分组成:头部、载荷和签名。
头部
JWT 头部通常由两部分组成:令牌的类型(即 JWT),以及所使用的签名算法(例如 HMAC SHA256 或 RSA)。例如:
{ "alg": "HS256", "typ": "JWT" }
载荷
JWT 载荷包含有关用户或其他对象的信息。它可以包含任意数量的声明,这些声明用于描述有关实体(通常是用户)的信息,以及其他元数据。例如:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
其中 sub
表示主题,iat
表示令牌发放时间(以秒为单位),name
表示用户名等。
签名
签名通常使用头部中指定的算法和密钥对头部和载荷进行加密,以便验证令牌没有被篡改。例如:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Express-jwt 实现认证和授权
Express-jwt 是一个 Node.js 的 npm 包,可以方便地实现基于 JWT 的身份验证和授权。下面是具体步骤:
安装依赖
可以使用 npm 或 yarn 安装 express-jwt:
npm install express-jwt
添加路由保护
在需要保护的路由处添加
express-jwt
中间件即可。例如:-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ----------------------- ----- --- - ---------- -- -- --- ----- ---- -- --------------- ----- ------- ------------- ---- -- ---------- -------- ------- ------------------------- ----- ---- -- - -- -------- ------------- ---------- -------- ------- ------------------ --- ---
生成和验证 JWT
在登录时,服务端可以生成一个 JWT 并发送给客户端。在客户端发起请求时,将 JWT 添加到请求头中,服务端会通过验证 JWT 来确认用户的身份。例如:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ------------------------ ----- --- - ---------- -- ----- ------------ ------------------ ----- ---- -- - -- ----- -------- ----- ----- - ---------- --------- ----------------- -- --------------- ---------- ----- --- --- -- ---------- --- ------- ------------------------- ----- ---- -- - ----- ----- - --------------------------------- ------ ----------------- -------------- ----- -------- -- - -- ----- - ------ ---------------------- -------- -------- ------ --- - -- ---------- --- ------------- ---------- -------- ------- -------------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/52740