2016-07-24 29 views
1

我正在使用expressJs和passportjs(本地策略)來創建後端應用程序以確保某些路由的安全。 我需要爲每個數據庫查詢添加當前用戶的信息,因此我們只向每個用戶公開相關信息。 我知道你可以訪問當前用戶檢查req.user的信息,但是這將涉及通過我所有的調用棧傳遞用戶信息(甚至請求)作爲參數,我發現它有點不方便。訪問ExpressJs上的當前用戶 - Passport

是否需要在最後一層(準備sql語句的那一層)上獲取用戶信息而不在參數上添加它?

感謝。

回答

1

爲什麼不能通過id獲取最後一層的用戶信息?由於您使用passport-local,因此您可以通過訪問req.user.id,在最後一次數據庫查詢中通過id查詢用戶。不需要參數。

router.post('/your/route', function(req, res) { 
    User.findOne({ 
    where: {id: req.user.id} 
    }).then(function(user) { 
    // do something 
    }); 
//send response 
}); 
+0

謝謝您的回答。這樣我仍然需要傳入userId來查詢數據庫。我試圖避免爲所有方法添加額外的參數。 – Sole

1

可以傳遞到護照的done函數作爲第二個參數的用戶對象與您的自定義數據,如:

done(null, {id: 1, name: 'John'}); 

req.user將返回{id: 1, name: 'John'}

相關問題