【问题标题】:Erase cookie variable in another route in cookie-session在 cookie-session 的另一个路由中擦除 cookie 变量
【发布时间】:2019-01-08 04:54:36
【问题描述】:

假设我有一个简单的页面,该页面在 cookie 中存储了该页面的浏览次数(代码来自 cookie-session github 自述文件):

var cookieSession = require('cookie-session')
var express = require('express')

var app = express()

app.set('trust proxy', 1) // trust first proxy

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

app.listen(3000)

然后我想创建另一条路线,它会简单地消除前一条路线上的计数器:

app.get('/d', function(req, res, next) {
    req.session.views = 0
    console.log(req.session.views)
});

但是,这样做我仍然会在 '/' 路由上获得计数,而在 '/d' 路由上它是 0。 如何更改一条路由的 cookie 会话参数?

【问题讨论】:

    标签: express cookies session-cookies


    【解决方案1】:

    似乎您没有在第二条路由中发送任何响应,根据文档 (https://github.com/expressjs/cookie-session#cookiesessionoptions),这意味着不会发回任何 cookie,并且您的会话将保持不变。

    因此,您擦除计数器的路径应该如下所示:

    app.get('/d', function(req, res, next) {
      req.session.views = 0
      res.end('View counter has been reset to 0')
    });
    

    【讨论】:

    • 我试过了,但它仍然显示来自'/' route 的当前视图量
    • 嗯,您确实重新启动了应用程序,不是吗?如果是这样,您能否发布整个列表,以便我尝试复制?
    • 是的,我将 req.session.views 放在了 if else 语句中,所以它没有正确更新。
    猜你喜欢
    • 2018-10-08
    • 2014-11-07
    • 1970-01-01
    • 2019-01-18
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2015-02-12
    相关资源
    最近更新 更多