登录(JWT) node.js后端

本文详细介绍了使用npm的express-jwt和jsonwebtoken库实现JWT基于HTTP头的用户身份验证过程,包括生成JWT、验证JWT以及处理401错误的解决方案。

需下载:

npm i express-jwt@6
npm i jsonwebtoken

第一步:用户提供凭证(例如用户名和密码)向服务器发送登录请求。

第二步:服务器验证凭证的有效性,并生成一个JWT。

(1)在app.js中(后端node.js)

var expressJWT = require("express-jwt")
app.use(expressJWT({
  secret:'key',
  algorithms:['HS256']

}).unless({
  path: ["/login",{url: /^\/upload/, methods: ["GET"] }]
}))

(2)routes中的index.js文件中

 引入

let jwt = require("jsonwebtoken")

第三步:服务器将生成的JWT作为响应返回给客户端。

第四步:客户端保存JWT,通常存储在浏览器的本地存储(localStorage)或会话存储(sessionStorage)中
第五步:客户端发送后续请求时,在请求的头部添加一个Authorization字段,值为"Bearer <JWT>",其中<JWT>是服务器返回的JWT。

第六步:服务器收到请求后,从请求头部获取JWT,并进行验证和解码。

第七步:如果JWT验证通过,并且未过期,服务器认为该请求是经过身份验证和授权的,可以继续处理请求。

但是需要注意的是,当我们写完JWT登录后,可能在其他页面上请求数据API会报401的错误。这通常表示未经授权或身份验证失败。这种错误通常与身份验证和访问权限相关。

导致这个问题的主要原因可能是在后端app.js中

我们并没有写我们请求数据接口,所以将数据请求的API加上就可以解决这个问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值