如何在express.js中启用会话

时间:2015-12-17 21:28:46

标签: node.js session express

我有node.js 5.1.1和express.js 4.13.3。

我读了一本书,并说为了在Express中启用会话,你必须在开始一个新项目时express -e -s nameOfYourProject。但这本书有点老了,我得到error: inknow option '-s'

这本书的例子,使用了这样的会话,var sess = this.req.session; 。整章是关于注册和登录的。

那么,我该如何启用会话?我是否必须安装模块或默认启用它们?

1 个答案:

答案 0 :(得分:2)

默认情况下,它们未启用,但快递核心团队通过npm提供了一个模块。我相信使用与快递捆绑在一起,但他们在Express v4中将许多功能分解为单独的模块。它使用起来非常简单,我建议使用Redis或其他持久数据存储作为会话存储。

模块: express-session

基本用法:

const express = require('express')
const parseurl = require('parseurl')
const session = require('express-session')

let app = express()

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}))

app.use(function (req, res, next) {
  var views = req.session.views

  if (!views) {
    views = req.session.views = {}
  }

  // get the url pathname 
  var pathname = parseurl(req).pathname

  // count the views 
  views[pathname] = (views[pathname] || 0) + 1

  next()
})

app.get('/foo', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/foo'] + ' times')
})

app.get('/bar', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/bar'] + ' times')
})