express使用session

-

/**
 * session是服务器端的cookie,可以在服务器端存储一些公共数据
 * session是基于cookie工作的
 * 
 express-session的使用
 1、安装
 npm install express-session --save
 2、引入
 const session = require('express-session')
 3、配置中间件
 app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
  }))

 配置项
 name:cookie的key
 store://配置分布式session  把session存储在数据库 或者 redis
 rolling:Boolean //在每次请求时 强行设置cookie,这将重置cookie的过期时间 默认是false

 4、销毁session
 req.session.destroy(function(err){

 })
 或者把过期时间设置为0
 req.session.cookie.maxAge = 0;
 */

const express = require("express");
const app = express();
const session = require('express-session')


// 配置express-session中间件
app.use(session({
  secret: 'this is session',//生成服务器端 session 的签名
  name:'itying',//修改session 对应cookie的名称

  resave: false,//强制存储session 即使它没有变化
  saveUninitialized: true,//强制将未初始化的session 存储
  cookie: { //和cookie的配置一样
    maxAge:1000 * 60 * 60,//设置过期时间  
    secure: false //true 表示只有https协议才能访问 
  },
  rolling:true,//强制重置cookie过期时间
}))

app.get("/",(req,res) => {
  // 获取session
  if(req.session.username || req.session.age){
    res.send(req.session.username+"--"+req.session.age+"已经登录")
  } else{
    res.send("没有登录")
  }
  

})

app.get("/login",(req,res) => {
  // 设置session
  req.session.username = "张三";
  req.session.age = 20;
  res.send("执行登录")

})

app.get("/loginOut",(req,res) => {
  // 销毁session
  // 1、设置session的过期时间为0
  req.session.cookie.maxAge = 0; //这样会把所有的session都销毁
  // 2、销毁指定serssion
  req.session.username = "";
  // 3、销毁sesdsion destroy  //这样也是销毁所有session
  req.session.destroy(err => {

  })

  res.send("退出登录")

})

app.listen(3000)

-

原文地址:https://www.cnblogs.com/fqh123/p/15257834.html