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('服务启动成功')
})
网友评论