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