![](/img/trans.png)
[英]Node/Express with connect-redis, how handle session expiry
[英]Handle redirects after session expiry in ReactJS application with Node/Express backend?
我在redis-store
使用express-session,它創建了會話詳細信息的httpOnly
cookie。 我應該如何處理cookie到期和用戶清除的cookie,以便可以將用戶重定向回登錄頁面?
以下是方案:
_session
已由用戶清除。 _session
已過期。 因此,自然的響應是用戶重新加載站點時,React應該注銷他。 我應該如何處理呢?
我假設您的Nodejs + Express代碼是JSON API,而不是提供服務器端呈現的網頁。 在這種情況下,如果使用過期/不存在的會話cookie發出請求,則只應返回錯誤。 您可以將其捆綁到一塊中間件中,因此您只需編寫一次即可,而無需多次編寫。 例如,此中間件可能返回指示“無效會話”的錯誤。
在反應方面,如果API為錯誤/不存在的會話cookie創建的特定錯誤是由API返回的,則取決於您的反應代碼來決定要做什么。 您可能選擇將用戶發送到告訴他們他們已注銷的頁面,或者您可能希望直接將他們發送到登錄提示,指示他們必須重新進行身份驗證。
如果_session
cookie過期,瀏覽器將簡單地為您清除它。 因此,您需要在API端上擔心的是沒有提供cookie,或者服務器端代碼以某種方式使會話無效。
示例方案:
如您所見,在這兩種情況下,返回相同的錯誤都是合適的,前端將解釋該錯誤並決定如何使用戶重新進行身份驗證(通常是通過將用戶再次重定向到登錄屏幕)。
app.get('*', function (request, response) {
response.sendFile(path.resolve(__dirname, 'public', 'index.html'));
});
@Elliot這就是我在Express中為React服務的方式。 當我點擊reload時,此調用被調用並進行React加載。 在API調用中,我們有一個錯誤方法。 但是,在這種情況下,沒有錯誤方法,因此如何注銷用戶?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.