JSON Web Token(JWT)是一种用于在网络应用程序之间安全地传递信息的开放标准。JWT由三部分组成:头部,载荷和签名。头部通常包含JWT的类型和使用算法的信息。载荷通常包含有关用户或实体的信息,例如用户名或角色。签名用于验证消息是否未被篡改。
在Node.js中,您可以使用jsonwebtoken库来轻松地创建和验证JSON Web令牌。这篇文章将展示如何在Node.js中使用jsonwebtoken来实现JWT身份验证。
步骤1:安装jsonwebtoken
在Node.js中,您可以使用npm来安装jsonwebtoken。
npm install jsonwebtoken
步骤2:创建JWT
要创建JWT,请使用jsonwebtoken库中的sign方法。此方法采用两个参数:负责生成的有效载荷和密钥。
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ------- - - -------- ---- --------- ------------- -- ----- ------------ - ---------------------- ----- ----- - ----------------- -------------- -------------------
在此示例中,我们创建了一个有效载荷,其中包含用户标识的user_id字段和用户名的username字段。我们还创建了一个名为jwtSecretKey的密钥,该密钥用于签署JWT。最后,我们使用jsonwebtoken库的sign方法创建了一个JWT,并将其打印到控制台上。您可以将其保存在数据库或本地存储中以供以后使用。
步骤3:验证JWT
要验证JWT,请使用jsonwebtoken库中的verify方法。此方法采用三个参数:您要验证的JWT,用于验证的密钥以及可选的回调函数。
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ----- - ----------------- ----- ------------ - ---------------------- ----------------- ------------- ----- -------- -- - -- ----- - ----------------- - ---- - --------------------- - ---
在此示例中,我们使用jsonwebtoken库的verify方法来验证JWT。我们还传递了与创建JWT时使用的相同jwtSecretKey作为验证密钥。如果JWT有效,则返回有效载荷的属性对象。否则,将返回一个错误对象。
步骤4:将JWT存储在客户端
为了便于在客户端中存储JWT,您可以将其存储在Cookie或本地存储中。
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ------------ - ------------------------- ----- --- - ---------- ------------------------ ----------------- ----- ---- -- - ----- ------- - - -------- ---- --------- ------------- -- ----- ------------ - ---------------------- ----- ----- - ----------------- -------------- ----------------- ------ - --------- ---- --- --------------------- ---
在此示例中,我们使用了Express.js中的cookie-parser中间件来解析传入请求中的Cookie。我们使用我们之前创建的JWT和所用的相同的密钥。最后,我们使用res.cookie()将JWT存储在客户端的Cookie中。我们在第三个参数中设置了httpOnly标志,以确保该Cookie无法通过客户端JavaScript代码访问。
步骤5:使用JWT进行身份验证
要使用JWT进行身份验证,请获取保存在Cookie或本地存储中的JWT,并将其传递给jsonwebtoken库的verify方法进行验证。
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ------------ - ------------------------- ----- --- - ---------- ------------------------ ------------ ----- ---- -- - ----- ----- - --------------- -- --- ----- ------------ - ---------------------- ----------------- ------------- ----- -------- -- - -- ----- - ------------------------------------- - ---- - ----------------- ----------------------- - --- ---
在此示例中,我们检索了我们在第4步中存储在Cookie中的JWT。我们然后使用jsonwebtoken库的verify方法来验证JWT。如果JWT有效,则返回有效载荷中的username属性以显示欢迎消息。否则,返回401状态码,并发送“未经授权”的响应消息。
结论
JSON Web Token(JWT)是一种灵活,安全且可扩展的身份验证解决方案。使用jsonwebtoken库,您可以轻松地在Node.js应用程序中创建和验证JWT。在本文中,我们演示了如何使用jsonwebtoken在Node.js中实现JWT身份验证。使用这些指南和示例代码,您可以开始在自己的应用程序中实现基于JWT的身份验证。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6715aa9cad1e889fe21859c2