码迷,mamicode.com
首页 > 其他好文 > 详细

express 4 使用session和cookies

时间:2017-01-21 11:01:57      阅读:481      评论:0      收藏:0      [点我收藏+]

标签:ret   var   require   tool   div   htm   port   内容   mod   

 

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})  
}));  

 

 

express 4 使用session和cookies

标签:ret   var   require   tool   div   htm   port   内容   mod   

原文地址:http://www.cnblogs.com/ivantang/p/6336579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!