一、Session 简单介绍
session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。
浏览器已关闭就销毁,也可以在同域名下共享数据。
Session 的用途:
session 运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。
当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。
session 可以和 Redis 或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)
丢失。
二、Session 的工作流程
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于
key,value 的键值对,然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),
找到对应的 session(value)。 客户的信息都保存在 session 中
三、express-session 的使用:
1.安装 express-session
npm install express-session --save
2.引入 express-session
var session = require("express-session")
3.设置官方文档提供的中间件
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
}))
4.使用
设置值 req.session.username = "张三";
获取值 req.session.username
四、express-session 的常用参数:
五、express-session 的常用方法:
req.session.destroy(function(err) { /*销毁 session*/
})
req.session.username='张三'; //设置 session
req.session.username //获取 session
req.session.cookie.maxAge=0; //重新设置 cookie 的过期时间
案例:
session.js
let express = require('express');
let app = express();
let session = require('express-session')
// 配置中间件
app.use(session({
secret:'keyboard cat',
resave:false,
saveUninitialized:true
}))
// 获取session
app.get('/',(req,res) => {
res.send('获取session的值为:'+req.session.username)
})
// 设置session
app.get('/set',(req,res) => {
req.session.username = '小红红';
res.send('设置session成功!')
})
app.listen(8012)