详解nodejs express下使用redis管理session
发布时间 - 2026-01-11 00:48:49 点击率:次Session实现原理

实现请求身份验证的方式很多,其中一种广泛接受的方式是使用服务器端产生的Session ID结合浏览器的Cookie实现对Session的管理,一般来说包括以下4个步骤:
1.服务器端的产生Session ID
2.服务器端和客户端存储Session ID
3.从HTTP Header中提取Session ID
4.根据Session ID从服务器端的Hash中获取请求者身份信息
使用Express和Redis对Session管理的实现
var session = require('express-session');
var RedisStrore = require('connect-redis')(session);
var config={
"cookie" : {
"maxAge" : 1800000
},
"sessionStore" : {
"host" : "192.168.0.13",
"port" : "6379",
"pass" : "123456",
"db" : 1,
"ttl" : 1800,
"logErrors" : true
}
app.use(session({
name : "sid",
secret : 'Asecret123-',
resave : true,
rolling:true,
saveUninitialized : false,
cookie : config.cookie,
store : new RedisStrore(config.sessionStore)
}));
实现堆栈
express-session实例化后调用代码(https://github.com/expressjs/session)
if (!req.sessionID) {
debug('no SID sent, generating session');
generate();
next();
return;
}
generate方法调用(https://github.com/expressjs/session)
store.generate = function(req){
req.sessionID = generateId(req);
req.session = new Session(req);
req.session.cookie = new Cookie(cookieOptions);
if (cookieOptions.secure === 'auto') {
req.session.cookie.secure = issecure(req, trustProxy);
}
};
RedisStrore实例化时调用store.set(sid, session, callback)(https://github.com/expressjs/session)
store.set调用RedisStore.prototype.set(https://github.com/tj/connect-redis),其中座位hashkey使用的是前缀+sessonId,前缀默认值为'sess',多个应用共享和不共享同一个redis session服务时,一定要注意设置prefix
RedisStore.prototype.set = function (sid, sess, fn) {
var store = this;
var args = [store.prefix + sid];
if (!fn) fn = noop;
try {
var jsess = store.serializer.stringify(sess);
}
catch (er) {
return fn(er);
}
args.push(jsess);
if (!store.disableTTL) {
var ttl = getTTL(store, sess);
args.push('EX', ttl);
debug('SET "%s" %s ttl:%s', sid, jsess, ttl);
} else {
debug('SET "%s" %s', sid, jsess);
}
store.client.set(args, function (er) {
if (er) return fn(er);
debug('SET complete');
fn.apply(null, arguments);
});
};
store.client.set调用的为(https://github.com/NodeRedis/node_redis)
最终调用原生redis.hset方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nodejs
# redis
# session
# express
# express中使用redis
# 使用Nodejs 实现一个简单的 Redis客户端(推荐)
# 使用NodeJS 5分钟 连接 Redis 读写操作的详细过程
# 提升node.js中使用redis的性能遇到的问题及解决方法
# node.js使用redis储存session的方法
# nodejs使用redis作为缓存介质实现的封装缓存类示例
# Node.js与Sails redis组件的使用教程
# 在Node.js应用中使用Redis的方法简介
# node中如何使用redis的实现
# 的是
# 多个
# 值为
# 大家多多
# 身份验证
# 客户端
# 请求者
# sid
# maxAge
# host
# sessionStore
# secret
# connect
# config
# cookie
# ttl
# db
# true
# logErrors
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
如何快速搭建虚拟主机网站?新手必看指南
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel安装步骤详细教程_Laravel环境搭建指南
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何快速搭建高效WAP手机网站吸引移动用户?
简单实现Android文件上传
Laravel如何实现API版本控制_Laravel版本化API设计方案
C#如何调用原生C++ COM对象详解
网站制作企业,网站的banner和导航栏是指什么?
无锡营销型网站制作公司,无锡网选车牌流程?
JavaScript Ajax实现异步通信
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
香港服务器如何优化才能显著提升网站加载速度?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
微信h5制作网站有哪些,免费微信H5页面制作工具?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Laravel如何使用Telescope进行调试?(安装和使用教程)
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
利用JavaScript实现拖拽改变元素大小
Bootstrap整体框架之CSS12栅格系统
如何快速查询网站的真实建站时间?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
三星、SK海力士获美批准:可向中国出口芯片制造设备
微信推文制作网站有哪些,怎么做微信推文,急?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Laravel如何处理表单验证?(Requests代码示例)
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Laravel如何使用模型观察者?(Observer代码示例)
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
制作公司内部网站有哪些,内网如何建网站?
高防服务器租用如何选择配置与防御等级?

