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
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 不知道我是不是最后一个知道的,反正现在在工程中用的超级爽!不需要bluebird,不需要co,把Promise 的...
- 在 express 项目中使用 html 模板 express默认使用jade模板,可以配置让其支持使用ejs或h...
- Nuxt,作为一款优秀的基于Vue的服务端渲染(SSR)框架,既可以使用他的服务器渲染模式,也可以打包成静态页面,...
- 反向代理 在前后端分离的开发中,存在一个问题,我的前端代码是在我的电脑上。而后端java代码是在另一位同事上。如果...