我想在用户登录失败后显示一条消息,但我无法让变量显示在我的 Jade 视图中。
我有一些片段,我知道我必须在我的 app.configure() 中使用它:
app.use (req, res, next) ->
res.locals.session = req.session
我将设置用户 POSTS 错误密码后的 flash 消息:
exports.postSession = (req, res) ->
users = require '../DB/users'
users.authenticate(req.body.login, req.body.password, (user) ->
if(user)
req.session.user = user
res.redirect(req.body.redirect || '/')
else
req.session.flash = 'Authentication Failure!'
res.render('sessions/new', {title:'New', redirect: req.body.redirect })
)
我不知道如何访问res.locals.session
我的 Jade 文件。我怀疑我是否设置正确。这个问题很像这个问题:Migrating Express.js 2 to 3, 特别是 app.dynamicHelpers() to app.locals.use? 但我仍然无法让它工作。如果有人可以向我展示一个在 res.local 中设置值并在视图中访问它们的简单示例,将不胜感激。
ps我确实知道connect-flash,但我需要了解如何使视图中的东西可用。
这是我的应用程序:
app.configure(() ->
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use(express.bodyParser())
app.engine('.jade', require('jade').__express)
app.use(express.methodOverride())
app.use(express.cookieParser())
app.use(express.session({ store: new express.session.MemoryStore({reapInterval: 50000 * 10}), secret: 'chubby bunny' }))
app.use(express.static(__dirname + '/public'))
app.use((req, res, next) ->
res.locals.session = req.session
next()
)
app.use(app.router)
)