2013-07-06 113 views
0

我想在Node的快速模塊中使用簽名的cookie,並閱讀了文檔,但對如何驗證它們感到困惑。據我所知,我必須驗證服務器上的cookie。但是,我如何這樣做對我來說還不清楚。我會收到cookie,然後呢?我必須運行一個函數來驗證它嗎?如果是這樣,什麼功能?如果沒有,並且它是自動的,那麼如果cookie確實被修改了,我該如何編程該怎麼做?我必須使用什麼代碼來檢查這個?我打算使用這些簽名的cookie進行用戶驗證。因此,如果我轉到一個頁面,並且想要顯示不同的內容(取決於用戶是否已通過身份驗證),我不知道如何執行此操作。如果頁面在驗證cookie之前呈現,我不明白這是如何實現的。因此,我假設我必須在渲染頁面之前驗證cookie,這導致我提出這個問題,以便弄清楚如何這樣做。節點快速驗證簽名cookie

從本質上講,我希望做這樣的事情:

if(CookieIsVerified) 
{ 
    ..... 
} 
else if (!CookieIsVerified) 
{ 
    ..... 
} 

回答

2

你並不需要自己驗證的cookie。如果您使用cookieParser中間件,則可以傳遞一個祕密,用於簽署cookie。這意味着沒有人可以改變它。

其次,使用cookieSession中間件。這將採取req.session中的任何內容並將其序列化到cookie中。

app.use(express.cookieParser('yoursecretkeyhere')); 
app.use(express.cookieSession()); 

要檢查用戶是否已通過身份驗證,您可以創建自己的中間件來檢查當前會話是否已通過身份驗證。如果它沒有重定向到登錄頁面或返回401,則該中間件應該用於除登錄路由之外的所有路由。

創建一個登錄路徑,該憑證需要憑據並且不使用上述中間件。在這裏你可以檢查用戶名/密碼或令牌,如果用戶是有效的,在會話上設置一個認證標誌。你可以在你的上面的中間件中檢查這個標誌。