zoukankan      html  css  js  c++  java
  • 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_modulesconnect-mongoReadme.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})  
    }));  
  • 相关阅读:
    android使用广播退出应用程序
    Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW _TASK flag.
    Android获取屏幕尺寸大小
    onActivityResult不被执行的问题。
    ADB操作多台设备
    在Eclipse的DDMS中查看手机data文件夹中的内容
    JDK版本过高,导致Eclipse报错
    Android colors.xml
    Eclipse智能提示
    在配置IIS负载均衡时,引起的一系列问题
  • 原文地址:https://www.cnblogs.com/ivantang/p/6336579.html
Copyright © 2011-2022 走看看