我有 0.8.21 nodejs 和 3.1.0 express 框架(模块是最新的)。有著名的heroku项目,包括express、mongodb和passport auth:
https://github.com/madhums/nodejs-express-mongoose-demo
会话存储:
var express = require('express')
, mongoStore = require('connect-mongo')(express)
...
app.use(express.logger('dev'))
// set views path, template engine and default layout
app.set('views', config.root + '/app/views')
app.set('view engine', 'jade')
app.configure(function () {
// dynamic helpers
app.use(viewHelpers(config))
// cookieParser should be above session
app.use(express.cookieParser())
// bodyParser should be above methodOverride
app.use(express.bodyParser())
app.use(express.methodOverride())
// express/mongo session storage
app.use(express.session({
secret: 'noobjs',
store: new mongoStore({
url: config.db,
collection : 'sessions'
})
}))
// connect flash for flash messages
app.use(flash())
// use passport session
app.use(passport.initialize())
app.use(passport.session())
app.use(express.favicon())
// routes should be at the last
app.use(app.router)
...
问题:我希望用户只登录 70 秒,所以我写了cookie: {maxAge: 70*1000},
之后app.use(express.session({
会发生什么:用户只能在 70 秒内通过站点,而不是退出。如果用户刷新页面或通过链接,会话更新到数据库,如:
{ "_id" : "cVYWfv7kHbaEPNUCD2Bbbaw4",
"session" : "{\"cookie\":{\"originalMaxAge\":70000,\"expires\":\"2013-03-02T14:46:52.146Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"51320f3fd04c162d14000003\"},\"flash\":{}}",
"expires" : Date( 1362235612146 ) }
但无论如何,用户只记录了 70 秒。我的意思是会话更新到 mongodb,新expires
日期,但用户仍然可以在登录后仅 70 秒后登录。
请帮帮我。谢谢你。