02.session

01. session的定义:

session指会话,但是后端人员常说的session,全称叫:服务器session会话存储

02. 特点:

  • 存在服务端,相对比较安全
  • 存储的是浏览器和服务器之间产生的一些信息
  • 默认session的存储在服务器的内存中,每当一个新客户端发来请求,服务器端都会新开辟出一块空间,供session会话存储

03. 工作流程:

  • 第一次浏览器请求服务器的时候,服务器会开辟一块存储空间,供session会话存储使用
  • 返回响应的时候,会自动返回一个cookie(有时为了安全, 会返回多个), cookie里面包含着,上一步会话存储‘容器’的编号(id)
  • 以后请求的时候,浏览器会自动携带这个cookie,给服务器
  • 服务器从cookie中拿到对应的session的id,去内存中匹配
  • 服务器根据匹配的信息,决定下一步具体的业务逻辑

04. 使用cookie-session操作session

  • cookie-session将session identifier通过cookie存储在客户端,将session值存储在服务器端,比如数据库中

  • 安装: npm install cookie-session

  • 引入:cookieSession = require(“cookie-session”);

  • 使用:app.use({

    ​ name: ‘mySession’, //设置cookie的名称,默认是session

    ​ keys: ["@#DS32", “% @ @ @$$!!”],//密钥, 加密和解密cookie值的秘钥列表

    })

05. 代码示例:

const express = require('express');
const cookieSession = require('cookie-session');
const app = express();
app.listen(4000, () => {
    console.log('server port 4000');
});
//使用中间件cookie-session操作session:  
app.use(cookieSession({
    name: 'cursession', //cookie名称 
    keys: ['123^%$abd', '*(&^%#876'] //密钥

    // Cookie Options
    //maxAge: 24 * 60 * 60 * 1000 // 24 hours
}));
//设计路由
//设置session  :req.session.session名称 = 值 
app.get('/setsession', (req, res) => {
    req.session.UID = 21;
    req.session.FENSHU = [89, 90];
    res.send("<script>alert('session设置成功');location.href='/getsession';</script>");
});
//获取session  
app.get('/getsession', (req, res) => {
    console.log(req.session);
    let { UID, FENSHU } = req.session;
    res.send(req.session);
});

06. 应用:

app.get('/login', (req, res) => {
    req.session.UID = 21;
    req.session.FENSHU = [89, 90];
    res.sendFile("./login.html")
});
function checkLogin(req, res, nex){
   if(req.session.UID){
     res.send("<script> location.href = '/welcome'; </script>")
   }else {
     res.send("<script> alert("请登录"); location.href = '/login'; </script>")
   }
}
app.use(checkLogin);
app.get("/welcome", (req, res)=>{
  res.send("欢迎登录");
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值