Я хочу отобразить флэш-сообщение после того, как пользователь не выполнит вход, но я просто не могу заставить переменные отображаться в моих представлениях Jade.
У меня есть несколько частей, я знаю, что должен использовать это в своем app.configure():
app.use (req, res, next) ->
res.locals.session = req.session
И я установлю, что сообщение флэш-сообщения после того, как пользователь ОТПРАВЛЯЕТ неправильный пароль:
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. Я сомневаюсь, что все правильно. Этот вопрос очень похож на этот: Перенос Express.js с 2 по 3, в частности app.dynamicHelpers() в app.locals.use?, но я все еще не могу заставить его работать. Было бы очень признательно, если бы кто-нибудь мог показать мне простой пример установки значений в res.local и доступа к ним в представлении.
p.s. Я знаю о 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)
)