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

原文地址:https://www.cnblogs.com/lyraLee/p/12207292.html