node中如何使用jwt实现身份验证

前言

当我们在一些实际项目的时候,我们可能会涉及到一些鉴权的功能,比如当我们没有进行登录的时候,也就是没有一些身份验证信息的时候,我们在地址栏是无法进行访问其他的页面的。

实现思路

先下载模块

npm i express-jwt

 npm i jsonwebtoken

下载完需要用到的模块后,引入jsonwebtoken

 然后,通读代码,就是得到传过来的请求体携带的用户名和密码,生成一个密钥,被携带上。

router.post("/login",async function(req,res){
  var user=await userModel.find({username:req.body.username,password:req.body.password,})
  if(user.length!=0){
    var token=jwt.sign({
      data:"admin",
    },'secret',{expiresIn:"30000s"},httpOnly=true);
    res.json({"message":"登陆成功","code":200,token:"Bearer"+" "+token})
  }
})

接下来在入口文件app.js中做一些操作

首先依然是先引入express-jwt,并且命名为expressjwt

 然后在下方写上一些判断,此中,secret是上文编写所带名,algorithms:['HS256']是固定的,unless..的意思是:出了访问/login这个路径的页面外,其他页面在没带token的情况下,是无法访问的,并且返回下文,也就是无效token等。

app.use(expressjwt({
  secret:"secret",
  algorithms:['HS256']}).unless({path:["/login"]}))
app.use(function(err,req,res,next){
  if(err.name==="UnauthorizedError"){
    res.json({"message":"无效token","code":400})
  }
})

在这里,要需要注意几点,我在进行代码编写的时候,没有很注意代码的逻辑,从而导致没有生效。

一定要放在引入文件的上面,不然的话,按照逻辑是无法生效的。

 我们来看一下,是怎么样,实现jwt验证的。

因为我们要进行一个注册,所以我们把/add这个也添到允许路径里面

 然后我们去添加一个用户

 然后我再去进行登录,也就是/login路径,我们可以看到,此时已经生成了一段token携带

 把这段token信息手动加上后,我们会发现现在是可以访问成功。

 如果把那段token信息取消勾选后,再去访问/user的话,是无法访问的,并且无效token信息。

 到此,后端编写就完成拉~~~剩下就是在前端的一些操作,进行判断,然后在router文件进行引入就ok啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值