我使用Passport.js本地策略來處理我的應用程序中的身份驗證。我還使用Nodemon在我進行更改時自動刷新服務器。Passport.js無狀態
問題是,每當我做出改變我需要再次登錄到應用程序。目前這只是發展,但同樣的概念將適用於處理請求的多個服務器(例如EC2負載均衡器)。所以我的問題是,如何讓Passport.js無狀態,同時仍然保持用戶的狀態?
好像必須有保存在服務器和/或服務器的重新啓動狀態的方式。
我使用Passport.js本地策略來處理我的應用程序中的身份驗證。我還使用Nodemon在我進行更改時自動刷新服務器。Passport.js無狀態
問題是,每當我做出改變我需要再次登錄到應用程序。目前這只是發展,但同樣的概念將適用於處理請求的多個服務器(例如EC2負載均衡器)。所以我的問題是,如何讓Passport.js無狀態,同時仍然保持用戶的狀態?
好像必須有保存在服務器和/或服務器的重新啓動狀態的方式。
你有兩個選擇:
首先選擇需要較少的設置,如果你已經有了一個共享的數據庫,只是實例存儲和它的應用程序傳遞給你,例如:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
第二個選項需要像passport-jwt或不同的護照策略也許完全拋棄護照並直接在自定義中間件中使用jsonwebtoken。
很棒的細節。非常感謝。 –
爲什麼這個應用程序完全無狀態很重要?如果你擔心的是你可以傳播國家信息 - 我不太清楚它是如何給你帶來好處的。只是試圖幫助你避免[問XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –
在生產中,我計劃使用EC2負載平衡器,以便基本上可以爲每個請求使用不同的服務器,因此即使登錄請求發生在單獨的服務器上,我也需要確保用戶已獲得授權。我不希望用戶每次想要爲每個新服務器發出請求時都必須登錄。然後在開發過程中,每次我做出改變都會變得很痛苦,而且Nodemon會重新啓動服務器以重新登錄。我可能完全錯誤,但似乎幾乎相同的解決方案可以解決這兩個問題。 –
將您的身份驗證相關數據存儲在redis服務器上。因此,服務器重啓將不會刷新您的身份驗證數據,並且Redis服務器上的緩存速度會更快。 –