nodejs中express中使用token认证

nodejs中express中使用token认证

// 倒入express模块
const express = require("express");
const app = express()
// 导入用于生成 JWT 字符串对包
const jwt = require("jsonwebtoken");
// 导入用于将客户端发送过来的JWT字符串,解析还原成 JSON 对象的包
const expressJwt = require("express-token");

// 允许跨域资源共享
const cors = require("cors");
app.use(cors())
// 解析post表单数据的中间件
app.use(express.urlencoded({extended:false}))

// 定义secret密钥,建议将密钥命名为 secretKey
const secretKey = "itehima No1 a"
// 注册将JWT字符串解析还原成JSON对象的中间件
// 使用app.user()来注册中间件
//expressJWT({secret:secretKey})就是用来解析token的中间件
//.unless({path:[/^\/api\//]})用来指定哪些接口不需要访问权限
//注意:只要成功配置了expressJwt这个中间件,就可以把解析出来的用户信息,挂载到req.user属性上
app.use(expressJwt({secret:secretKey}).unless({path:[/^\/api\//]}))
// 登陆接口
app.post("/api/login",function (req, res) {
    // 将req.body中的数据转换为userinfo常量
    const userinfo = req.body;
    //登陆失败
    if (userinfo.username !== "admin" || userinfo.password !== "00000000"){
        return res.send({
            status: 400,
            message:"登陆是被"
        })
    }
    //登陆成功
    //在登陆成功之后,调用jwt.sign()方法生成jwt字符串,并通过token属性发送给客户端
    //参数一:用户的信息对象
    //参数二:加密的密钥
    //参数三:配置对象,可以配置当前对象的token有效期
    //记住:千万不要把密码加密到token字符串中,否则就危险了
    const tokenStr = jwt.sign({username:userinfo.username},secretKey,{expiresIn: "30s"});
    res.send({
        status:200,
        message:"登陆成功",
        token: tokenStr
    })
})

// 这是一个有权限的api接口
app.get("/admin/getinfo",(req, res)=>{
    console.log(req.user)
    res.send({
        status:200,
        message:"获取用户信息成功",
        data:req.user // 要发送给客户端的用户信息
    })
})

app.listen(80,function () {
    console.log("服务启动成功!")
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值