express处理session保存到redis数据库中

安装依赖模块

> npm i express-session redis connect-redis -S

创建redis连接

const express = require('express')
const app = express()
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.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

app.get("/logout", (req, res) => {
    req.session.destroy(err => {
        if (err) {
            res.send("退出失败")
        } else {
            res.send("退出成功")
        }
    })
})
PS:写作不易,如要转裁,请标明转载出处。
%{ comment.page.total }条评论

猜你想看

微信小程序:前端开发宝典

最近文章
工具操作
  • 内容截图
  • 全屏
登录
注册
回顶部