我有node.js 5.1.1和express.js 4.13.3。
我读了一本书,并说为了在Express中启用会话,你必须在开始一个新项目时express -e -s nameOfYourProject
。但这本书有点老了,我得到error: inknow option '-s'
。
这本书的例子,使用了这样的会话,var sess = this.req.session;
。整章是关于注册和登录的。
那么,我该如何启用会话?我是否必须安装模块或默认启用它们?
答案 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')
})