Я запускаю Express и NodeJS в качестве backend для углового интерфейса. Я использую RedisStore для сеансов. Используя this blog article, я был в состоянии придумать следующий код:Использование Углового и Узлового Express CSRF с сеансом Redis, как сбросить информацию о сеансе и CSRF после окончания сессии?
app.use express.cookieParser(config.session.signed)
app.use express.session({
secret: config.session.secret,
cookie: config.session.cookie,
store: new RedisStore({
client: client
})
})
app.use express.csrf()
app.use (req, res, next) ->
res.cookie('XSRF-TOKEN', req.session._csrf)
next()
app.use passport.initialize()
app.use passport.session({})
Все работает гладко до истечения Redis сессии (у меня есть этот набор в течение двух часов в моей конфигурации). По истечении срока действия сеанса, я получаю запрещенную ошибку:
Error: Forbidden
at Object.exports.error (/code/node_modules/express/node_modules/connect/lib/utils.js:62:13)
...
Проблема заключается в том, что я не могу понять, как поймать эту ошибку и сбросить RedisSession (и маркер CSRF), и, как следствие, однострочный угловой интерфейс просто кажется мертвым и требует обновления страницы, чтобы захватить новую сессию и оживить вещи.
Кто-нибудь еще сталкивается с этой проблемой? Заранее спасибо
Вы поняли это? Запуск в это тоже ... –
Ну, так и не получил ответа о том, как правильно уловить ошибку в узле, но тем временем я улавлю ошибку в своем угловом интерфейсе и вызывая '$ route.reload()' для обновления страницы и захвата нового файла cookie. Это немного меньше, чем идеально, потому что в случае события входа в систему я должен поймать ошибку, перезагрузить маршрут и затем повторно отправить запрос, чтобы пользовательский интерфейс был бесшовным. Но это действительно работает. – Kevin