zoukankan      html  css  js  c++  java
  • express持久化到redis配置(全)

    const express = require('express')
    const app = express()
        // 引入下面3个插件(都需要安装),把session存redis中
    var session = require('express-session');
    var redis = require('redis');
    var RedisStore = require('connect-redis')(session);
    // 创建Redis连接配置
    var redisClient = redis.createClient(6379, '127.0.0.1');
    // 设置Express的Session存储中间件(跟之前session设置方法一样,只加了store项为redis存储)
    app.use(session({
        // store session存储实例,默认为一个新的 MemoryStore 实例。
        store: new RedisStore({ client: redisClient }), //只需设置这个就可存储到redis
        name: 'session_id', //默认connect.sid
        secret: 'test_mima', //设置签名秘钥  内容可以任意填写
        resave: false, // 强制保存,如果session没有被修改也要重新保存,默认true(推荐false)
        saveUninitialized: true, //如果原先没有session那么就设置,否则不设置(推荐true)
        /* 设置cookie的过期时间,sessiion的过期时间会随cookie自动更改,
        也可以只设置session过期时间,cookie也跟着更改(两者只能选1个,效果一样)*/
        cookie: { // 全局设置cookie,就是访问随便api就会设置cookie,也可以在登录的路由下单独设置
            maxAge: 1000 * 30 * 60, //过期时间(毫秒
            httpOnly: true // 是否允许客户端修改cookie,(默认true 不能被修改)
                // secure: true //https这样的情况才可以访问cookie,默认false(推荐)
        },
        // rolling: true //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false推荐false)
    }));
    // 设置Session(在这个)
    // app.use((req, res, next) => {
    //     req.session.site = { name: 'IT笔录', domain: 'itbilu.com' };
    //     // 过期时间(以毫秒为单位)
    //     // req.session.cookie.maxAge = 1000 * 60 * 60 * 24
    //     next()
    // })
    
    
    
    
    // 登录成功设置session(上面访问网站就发送sessionid到客户端,登录成功自动更新session数据,也可以只设置登录才发cookieid)
    app.get("/login", function(req, res) {
        req.session.userinfo = { name: "王金龙", address: "河北邯郸", age: "18" };
        res.send('登录成功');
    });
    
    
    
    // 读取Session
    app.get("/getinfo", (req, res) => {
        var userinfo = req.session.userinfo;
        if (userinfo) {
            res.send(`欢迎回来,${userinfo.name}`)
        } else {
            res.send("请登录")
        }
    })
    
    // 销毁session,但是客户端的cookie还在,重新登录会自动重新写入session
    app.get("/logout", (req, res) => {
        req.session.destroy(err => {
            if (err) {
                res.send("退出失败")
            } else {
                res.send("退出成功")
            }
        })
    })
    
    
    app.get('/', (req, res) => res.send('设置session和cookie成功'))
    app.listen(3000, () => console.log(`http://127.0.0.1:3000`))
  • 相关阅读:
    进程和程序
    linux socket基本知识
    window核心编程 第五章 作业
    树的基本操作(C语言)
    每天都在反省自己,但是每天却都浑浑噩噩
    Windows核心编程 内核对象
    还没完整看过一本技术的书籍啊
    管道
    Memory Layout of a C Program(7.6)
    cpio命令用法
  • 原文地址:https://www.cnblogs.com/wjlbk/p/12633303.html
Copyright © 2011-2022 走看看