1.session使用express-session模块
app.use(session({
secret: 'secret key',
cookie: {
maxAge: 7 * 24 * 60 * 60 * 1000
},
resave: false,//是否重复保存session
saveUninitialized: false
}));
2.在此之前按需要配置跨域,如果要配置跨域携带cookie,必须将Access-Control-Allow-Credentials,设置为true。且配置了这个之后,其他的请求头都不能配置为*
//配置跨域
app.all('/*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', req.get('origin'))
res.header("Access-Control-Allow-Credentials", "true")
res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE')
res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
next()
})
3.使用cookieparser模块解析cookie
//解析cookie
app.use(cookieParser())
4.前端也必须进行相应的跨域配置
Axios.defaults.withCredentials = true
5.此时才能够正常每个请求头中都携带cookie和同一个session,否则不同请求的session会是新的session对象
6.cookie中会保存一个connect.sid,但这和req.sessionID并不完全一样,会比sessionID多一段hash加密的乱码。
7.如果req.cookie中包含了sessionID则返回用户信息