zoukankan      html  css  js  c++  java
  • node express session

    在express4.0版本以上,需要单独增加session模块:express-session:https://www.npmjs.com/package/express-session

    具体做法是,在app.js中

    var session = require('express-session');
    
    // 设置session:不明白为什么需要设置这两个属性?
    var sess = {
      secret: 'keyboard cat',
      cookie: {}
    }
    
    app.use(session(sess));
    

    然后再routes,controllers,models中就可以使用

    req.session.wj = 'sfp';

    console.log(req.session.wj);

     使用:在app中引入后,在其他页面直接使用,不用再引入了。

    session的存储:

    如果没有存在数据库中,而且使用了supervisor,则一旦修改,则会重启服务,session会消失;

    如果存在mongodb中,而且使用了supervisor,则一旦修改,就算重启服务,session还是会保存下来。

    官网教程:https://github.com/expressjs/session

    默认是内存存储;上线之后,要存入到数据库中。

    session()的属性

    cookie:path,httponly, secure, maxAge

    secure:true->https

    secure:false->http, trust proxy

    genid

    name:同一主机(hostname+port),需用name区分session

    proxy

    resave: 如果有touch,则设false;否则设true,一般为true

    rolling:false

    saveUninitialized:

    secret:store, unset

    方法:regenerate destory reload save touch(跟新maxAge的属性)

    属性:req.session.id req.session.cookie req.sessionID

    存储到数据库

    场景:进行单元测试,访问注册页,如果没登陆的话,跳到login;登陆的话,才能正常返回。现在测试访问注册页,一般来说需要两次请求,但实际上一次就能搞定。

    解决办法:

    1、app.use(function(){
       req.session.user= req.cookie('mock_user'); 
    })
    这里需要express-session;cookie-parse
    2、request.set('cookie', ''), 首先执行 1 middleware,session中就有值了,/register能通过,然后正常返回。
    
  • 相关阅读:
    【4N魔方阵】
    【2(2N+1)魔方阵 】
    【二分查找法(折半查找法)】
    【循环搜寻法(使用卫兵)】
    【合并排序法】
    【快速排序法一】
    【快速排序二】
    【快速排序三】
    【数据结构】之 线性表详解
    【计算机网络基础】
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4841853.html
Copyright © 2011-2022 走看看