【问题标题】:nodejs session cookie browser storagenodejs会话cookie浏览器存储
【发布时间】:2019-02-05 19:34:10
【问题描述】:

服务器是带有 express-session、passport、express 的 nodejs

当用户未通过身份验证时,我想避免保存 cookie,这可能吗?

var sessionStore = new session.MemoryStore;
app.use(session({
    cookie: { maxAge: null,
              httpOnly: true,
              secure: true,
            },
    store: sessionStore,
    resave: 'false',
    secret: 'somthing',
    name: "id",
    saveUninitialized: false
}));

是否有可能只在用户成功登录时才存储 cookie?谢谢!

【问题讨论】:

    标签: node.js session cookies


    【解决方案1】:

    您必须创建一个快速会话:https://www.npmjs.com/package/express-sessions 然后像这样存储会话:

    let session = require("express-session");
    
    app.use(session({
        secret: "secret",
        resave: false,
        saveUninitialized: true,
        cookie: {secure: true,
            httpOnly: true,
            maxAge: 1000 * 60 * 60 * 24
        }
    }));
    

    此会话将在您访问网页期间存储。如果要为 cookie 设置值,只需在请求中请求 cookie 并设置某种值:

    router.route("/login")
        .post(function(req, res) {
    
            req.session.Auth = req.body.user // => user values?
        })
    

    或 你可以使用 cookie-session(https://www.npmjs.com/package/cookie-session)

    如果您使用 cookie 会话,那么如果您对会话变量或从服务器端进行了任何更改,则无需重新启动服务器。

    app.use(cookieSession({
     name: 'session',
     keys: ['key1', 'key2']
    }))
    
    app.get('/', function (req, res, next) {
      // Update views 
      req.session.views = (req.session.views || 0) + 1
    
      // Write response 
      res.end(req.session.views + ' views')
    })
    

    【讨论】:

      猜你喜欢
      • 2017-10-07
      • 2021-10-13
      • 2018-11-19
      • 2018-10-30
      • 2013-09-06
      • 2014-01-09
      • 1970-01-01
      • 2015-02-27
      • 2021-07-07
      相关资源
      最近更新 更多