var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
app.use(cookieParser());
var sessions = {};
var SESSION_KEY = 'connect_sid';
app.get('/', function (req,res) {
//判断用户有没有卡
var card = req.cookies[SESSION_KEY];
//判断有没有卡,并且现在店还有没有开
if(card&&sessions[card]){
sessions[card].mny-=100;
res.send(`还有${sessions[card].mny}`);
}else{
//给卡的时候需要给一张唯一的卡
var cardId = new Date()+Math.random();
//给这个卡存钱
sessions[cardId] = {
mny:500
};
//把卡号给用户
res.cookie(SESSION_KEY,cardId);
//如果是新用户先给一张卡
res.send('这是一张500元的新卡');
}
});
app.listen(8080);
安装
$ npm install express-session
var express = require('express');
var app = express();
var session = require('express-session');
app.use(session({
resave:true, //每次重新保存
saveUninitialized:true,//保存初始化的
secret:'jw'//密钥
}));
app.get('/', function (req,res) {
var visit = req.session.visit;
if(visit){
visit++;
}else{
visit = 1
}
req.session.visit = visit;
res.send(`第${req.session.visit}次访问`)
});
app.listen(9999);
参数
参数 | 描述 |
---|---|
name | 设置 cookie 中,保存 session 的字段名称,默认为 connect.sid |
store | session 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等 |
secret | 通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改 |
cookie | 设置存放 session id 的 cookie 的相关选项,默认为 (default: { path: '/',httpOnly: true, secure: false, maxAge: null }) |
genid | 产生一个新的 session_id 时,所使用的函数, 默认使用 uid2 这个 npm 包 |
rolling | 每个请求都重新设置一个 cookie,默认为 false |
resave | 即使 session 没有被修改,也保存 session 值,默认为 true |