美文网首页
express项目中使用jwt

express项目中使用jwt

作者: 拾钱运 | 来源:发表于2022-05-02 19:50 被阅读0次
    const express=require('express')
    const app=express()
    //导入用于生成jwt字符串的包
    const jwt=require('jsonwebtoken')
    // 导入用于将客户端发送过来的jwt字符串,解析还原成json对象的包
    var { expressjwt } = require("express-jwt");
    
    const cors=require('cors')
    app.use(cors())
    
    // 解析post表单数据的中间件
    const bodyParser =require('body-parser')
    app.use(bodyParser.urlencoded({extended:false}))
    
    //secret密钥的本质:就是一个字符串
    //
    const seecretKey='iteheima No1 φ(* ̄0 ̄)'
    //当express-jwt这个中间件配置成功之后,即可在那些有权限的接口中,使用
    // req.user对象访问从jwt字符中解析出来的用户信息。
    app.use(expressjwt({secret:seecretKey,algorithms:['HS256']}).unless({path:[/^\/api\//]}))
    app.post('/api/login',function(req,res){
        const userInfo=req.body
        if(req.body.username!='admin'|| req.body.password!='000000'){
            return res.send({status:1,msg:'登陆失败'})
        }
        //调用jwt.sign生成jwt字符串,三个参数分别是:用户信息对象,加密密钥,配置对象(失效时间)
        const token=jwt.sign({username:userInfo.username},seecretKey,{expiresIn:'30h'})
        //注意:一般不把密码加密
        res.send({
            status:200,
            msg:'登陆成功',
            token:token
        })
    })
    app.get('/admin/getinfo',function(req,res){
        console.log(req.auth)
    
        res.send({
            status:200,
            message:'获取用户信息成功',
            data:req.auth
        })
    })
    
    
    app.use((err,req,res,next)=>{
        if(err.name==='UnauthorizedError'){
            return res.send({status:401,message:'无效token'})
        }
        res.send({status:500,message:'未知错误'})
    })
    app.listen('80',(req,res)=>{
        console.log('服务启动成功')
    })
    

    相关文章

      网友评论

          本文标题:express项目中使用jwt

          本文链接:https://www.haomeiwen.com/subject/ayyvyrtx.html