我正在使用expressJs和passportjs(本地策略)來創建後端應用程序以確保某些路由的安全。 我需要爲每個數據庫查詢添加當前用戶的信息,因此我們只向每個用戶公開相關信息。 我知道你可以訪問當前用戶檢查req.user的信息,但是這將涉及通過我所有的調用棧傳遞用戶信息(甚至請求)作爲參數,我發現它有點不方便。訪問ExpressJs上的當前用戶 - Passport
是否需要在最後一層(準備sql語句的那一層)上獲取用戶信息而不在參數上添加它?
感謝。
我正在使用expressJs和passportjs(本地策略)來創建後端應用程序以確保某些路由的安全。 我需要爲每個數據庫查詢添加當前用戶的信息,因此我們只向每個用戶公開相關信息。 我知道你可以訪問當前用戶檢查req.user的信息,但是這將涉及通過我所有的調用棧傳遞用戶信息(甚至請求)作爲參數,我發現它有點不方便。訪問ExpressJs上的當前用戶 - Passport
是否需要在最後一層(準備sql語句的那一層)上獲取用戶信息而不在參數上添加它?
感謝。
爲什麼不能通過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
});
可以傳遞到護照的done
函數作爲第二個參數的用戶對象與您的自定義數據,如:
done(null, {id: 1, name: 'John'});
和req.user
將返回{id: 1, name: 'John'}
謝謝您的回答。這樣我仍然需要傳入userId來查詢數據庫。我試圖避免爲所有方法添加額外的參數。 – Sole