session及其应用

Posted lyralee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于session及其应用的主要内容,如果未能解决你的问题,请参考以下文章

“反应堆模式”及其应用的简单解释[关闭]

flask 请求处理流程及其源代码分析sessioncookie生成源码

全文搜索用于提取文本片段(返回预期文本及其周围)

无法从 onListItemClick 开始片段

CI中SESSION的用法及其注意

session.flush与transaction.commit