session及其应用
session是服务器端存储数据的方式。避免了存在客户端被用户修改数据的情况。它以cookie为基础。
1. session用法
session的使用需要以下条件:
1. 需要存储用户和对应信息的映射(可以存储在内存中或者数据库中redis/mongo)
2. 需要一个sessionId来表示当前服务器的信息
let http = require('http');
let querystring = require('querystring');
let uuid = require('uuid'); //第三方库
// 本服务器的信息
let sessionId = 'lyraInfo';
// 将用户-信息的映射关系存储在内存中
const session = {};
http.createServer(function(req, res) {
if(req.url === '/toWash') {
let cookies = querystring.parse(req.headers.cookie);
let username = cookies[sessionId];
if(username && session[username]) {// 已经访问过
session[username].money -= 10;
// 防止汉字乱码
res.setHeader('Content-Type', 'text/html;charset=utf-8');
res.end(`您当前剩余额度是${session[username].money}`);
} else {// 第一次访问;将唯一标志符通过从cookie返回客户端
let cardId = uuid.v4();
res.setHeader('Set-Cookie', `${sessionId}=${cardId}; httpOnly=true`);
session[cardId] = {
money: 100 //首次设置该cardId对应的money为100
}
res.setHeader('Content-Type', 'text/html;charset=utf-8');
res.end(`您当前剩余额度是${session[cardId].money}`);
}
}
}).listen(3000);
2. session应用
用户登录session/jwt

浙公网安备 33010602011771号