我想在用户登录失败后显示一条闪存消息,但我无法让变量显示在我的Jade视图中。
我有一些代码片段,我知道我必须在我的app.configure()函数中使用它:
app.use (req, res, next) ->
res.locals.session = req.session
当用户输入错误的密码时,我会在用户提交POST请求后设置闪现消息:
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 })
)
我不知道如何在我的Jade文件中访问res.locals.session。我怀疑我没有正确设置一切。这个问题很像这个问题:Migrating Express.js 2 to 3, specifically app.dynamicHelpers() to app.locals.use?,但我仍然不能让它工作。如果有人能向我展示一个简单的例子,在res.local中设置值并在视图中访问它们,那将不胜感激。附言:我确实知道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)
)
session.flash
访问它吗? - Jonathan Ongapp.use
之后。你把它们放在什么顺序? - Jonathan Ongapp.use(req, res, next) -> res.locals.session = req.session
之后。所以除了我的app.use()语句的顺序之外,这基本上是创建res.local变量的方法吗?此外,我正在尝试在我的布局文件中访问这些res.local变量。我不认为这是问题,但是是否有限制哪些视图可以访问您的res.locals? - aeyang