express 4 使用session和cookies

https://my.oschina.net/u/1466553/blog/294336

http://blog.csdn.net/liyi109030/article/details/35271389

express是基于node.js的一个web框架,但是到了4.xx版本之后,session管理和cookies等许多模块都不再直接包含在express中,而是需要单独下载添加。

var express = require(‘express‘);
var session = require(‘express-session‘); //如果要使用session,需要单独包含这个模块
var cookieParser = require(‘cookie-parser‘); //如果要使用cookie,需要显式包含这个模块
var RedisStore = require(‘connect-redis‘)(session);
var app = express();

// 设置 Cookie
app.use(cookieParser(‘xiaocc_‘));

// 设置 Session
app.use(session({
  store: new RedisStore({
    host: "127.0.0.1",
    port: 6379,
    db: "test_session"
  }),
  resave:false,
  saveUninitialized:false,
  secret: ‘keyboard cat‘
}))

在express 4.0之前的版本,像session之类的中间件是伴随express自动安装的,网上有的教程使用的express版本正是4.0之前的版本,所以在使用4.0及其之后版本的时候一定要注意这点。

我的代码中使用session中间件的代码:

app.use(express.session({
    secret:setting.cookieSecret,
    key:setting.db,
    cookie:{maxAge:1000*60*60*24*30},
    store:new MongoStore({db:setting.db})
}));  

这是在实现mongodb回话组建connect-mongo时需要的。

查看node_modules\connect-mongo\Readme.md可以看到4.0之后的用法已经不一样了。内容:

With express4:  

    var session    = require(‘express-session‘);
    var MongoStore = require(‘connect-mongo‘)(session);  

    app.use(session({
        secret: settings.cookie_secret,
        store: new MongoStore({
          db : settings.db,
        })
      }));  

With express<4:  

    var express = require(‘express‘);
    var MongoStore = require(‘connect-mongo‘)(express);  

    app.use(express.session({
        secret: settings.cookie_secret,
        store: new MongoStore({
          db: settings.db
        })
      }));  

With connect:  

    var connect = require(‘connect‘);
    var MongoStore = require(‘connect-mongo‘)(connect); 

【解决办法】:

在package.json中加入express-session的中间件,命令提示符进入项目目录下,npm install 重新安装。或是在目录下使用命令安装:npm i express-session即可将express-session安装到项目中。在使用的模块中加入

var session    = require(‘express-session‘);
var MongoStore = require(‘connect-mongo‘)(session);  

……

使用的时候不在使用express.session,而是直接使用session():

app.use(session({
    secret:setting.cookieSecret,
    key:setting.db,
    cookie:{maxAge:1000*60*60*24*30},
    store:new MongoStore({db:setting.db})
}));  
时间: 2024-12-29 11:30:51

express 4 使用session和cookies的相关文章

express 4.2.0 使用session和cookies

express是基于node.js的一个web框架,但是到了4.xx版本之后,session管理和cookies等许多模块都不再直接包含在express中,而是需要单独下载添加. 由于之前没有注意看人家的更新日志等,所以纠结了一两天,今晚终于搞掂了,传言把session存到redis中,立马觉得高达上了...记录一下,所需的代码如下, var express = require('express'); var session = require('express-session'); //如果要

ASP.Net MVC Session和Cookies的简单使用

目标:用Session和Cookies实现登陆信息保存和展现 Cookies实现: Controller: 1 1 //把登陆用户名存到cookies中 2 2 HttpCookie cook = new HttpCookie("cookusername", UserName.ToString()); 3 3 Response.Cookies.Add(cook); View: <a href="#" class="dropdown-toggle&qu

Session 与cookies 的区别

两个都可以用来存私密的东西,同样也都有有效期的说法. 区别在于:session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去. 1.cookie数据存放在客户的浏览器上, session数据放在服务器上 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session 3.session会在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能 考虑到减轻服务器

session跟cookies区别

Session和Cookie的使用总结: Session和cookie都是asp.Net中的内置对象,至于他们有什么区别,在这里就不在多说,现在来说说一些比较实用点的东西: 我们知道网站都有一个后台管理系统,其中有登录和退出两个功能,在登录的时候我们往往会把用户的信息保存到session或者cookie中,以便后面使用,那么在登录的时候我们要注意哪些呢? 1.把一些敏感的东西存到session中,不太敏感的东西可以存在session或者Cookie中,比如用户名就是不太敏感,但是介于有些浏览器不

webform中Session和Cookies对象的用法、登录保持

一 .webform中Session和Cookies对象的用法 1.Session: Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.当用户请求来自应用程序的 Web 页时,如果该 用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终

express学习之session

最新版本的express没有包含session依赖项,需要我们自己配置并安装. 安装方法:npm install express-session 使用:var session = require('express-session'); var app = express(); app.use(session({ secret: '1234',//加密字               resave: false,               saveUninitialized: true,     

node的express中间件之session

虽然session与cookie是分开保存的.但是session中的数据经过加密处理后默认保存在一个cookie中.因此在使用session中间件之前必须使用cookieParser中间件. app.use(express.session([options])); options参数的具体取值: key:字符串,用于指定用来保存session的cookie名称,默认为coomect.sid. store:属性值为一个用来保存session数据的第三方存储对象. fingerprint:属性值为一

Webform Session、Cookies传值,跳转页面方式

Session:每个独立的浏览器都会创建一个独立的Session,不是一台电脑一个Session 存放位置:服务器上 作用:只要里面有内容,那么这个网站中所有的C#端都能访问到这个变量 优点:安全,速度快,全局访问无限制 缺点:消耗服务器内存资源 特性:Session在20分钟之内如果没有会话操作,则会自动释放 注意:1.不要存大量数据在Session里 2.临时Session取完无用后记得 = null清空它 语法:(1)用Session存值:Session["key名"] = 值;

session与cookies

一个页面从用户输入地址,到完全展现的过程,其中最主要一环是服务器如何辨识用户? 基本版本: 服务器就是一个有问必答的机器人浏览器请求主页,服务器返回主页:浏览器请求商品页面,服务器返回商品页面(代码). 这个机器人还是最原始的机器人,永远是1对1的答复,每个人都看到一样的页面. 提升版本: 每个用户都有自己账户,那么访问购物车.个人中心这类页面,必须返回不同的页面.这就引申出了一个用户标识. 用户标识的选材: 一个报文的旅游经历:从浏览器点击回车的一刹那,报文就开始了他的行程.这里面经过URL地