1、express-session的使用
1、安装express-session
npm i express-session
2、引入express-session模块
const session = require('express-session')
3、注册中间件
session.use(session({
secret: 'key', //随机指定
resave: false, //固定写法
saveUninitialized: true //固定写法
}))
4、使用
// 1 导入session中间件
const session = require('express-session')
const express = require('express')
const app = express()
// 2 注册session中间件
session.use(session({
secret: 'key', //随机指定
resave: false, //固定写法
saveUninitialized: true //固定写法
}))
// 3 使用session
app.post('/user/login',(req,res)=>{
req.session.user=req.body
// ....
})
app.get('/getUsername',(req,res)=>{
const username = req.session.user.username
// ....
})
2、jwt的使用
jwt : json web token
jwt由三部分组成:header(头部)、payload(载荷)、signature(签名) header.payload.signature
jwt的使用:客户端收到服务器返回的token之后,通常将其存储在localStorage或者sessionStorage中,在后面的通信过程中,将token放在请求头的Authorization字段中 格式:Bearer token
1、安装express-jwt 以及jsonwebtoken包
npm i jsonwebtoken express-jwt
2、使用jwt
// 1.导入jsonwebtoken和express-jwt模块
const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')
const express = require('express')
const app = express()
// 2.定义秘钥。注册解析中间件
const secretKey = 'hello cc'
// unless 的作用为排除某些路径不需要鉴权
// express-jwt 这个中间件注册成功之后,会将用户信息绑定到req上面,可以通过req.user获取
app.use(expressJWT({
secret: secretKey
}).unless({
path: [/^/api//]
}))
// 3.生成token
app.post('/api/login', (req, res) => {
const user = { id: 1, username: 'zs' }
const token = jwt.sign(user,
secretKey,
{ expiresIn: '30s' }// 定义token过期时间为30s 30h
)
res.send({ token: token })
})