2
我正在運行Express和NodeJS作爲角度前端的後端。我正在使用RedisStore進行會話。使用this blog article,我能想出下面的代碼:在會話過期後如何使用Angular和Node 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令牌),以及作爲結果,單頁角度前端看起來已經死了,它需要頁面刷新來抓住一個新的會話並重新開始。
其他人遇到這個問題?在此先感謝
你知道了嗎?運行到這個以及... –
好吧,從來沒有得到一個關於如何正確地捕獲在Node中的錯誤的答案,但在此期間,我在我的角度前端捕捉錯誤,並調用'$ route.reload()'更新頁面並獲取新的cookie。這只是一點點不理想,因爲在登錄事件的情況下,我必須捕捉錯誤,重新加載路由,然後重新發送請求以保持用戶體驗的無縫。但它確實有效。 – Kevin