所以我試圖用express和passport來構建一個應用程序,但是當我嘗試做某種TDD時,我想從控制器中分離業務邏輯。如何使用護照應用程序處理分層nodejs中的授權?
所以我有這樣一個常見的場景:
通過身份驗證的用戶要刪除一個項目,他發送到API的請求:
DELETE /api/item/1
的請求由控制器方法處理,該方法將提出請求的用戶傳遞給下一層(,這似乎不是一種好方法):
exports.delete = function (req, res, next) { var itemId = req.params.id; var userId = req.user._id; itemService.delete(itemId, userId, function (err, item) { if (err) next(err); return res.json(item); }); };
服務層(或任何你想將它命名,具有所有經營業務邏輯層),然後檢查,如果該項目是由用戶所有,然後刪除或以其他方式返回一個錯誤。
所以我想知道是否有任何方式從任何層獲取當前用戶而不從控制器傳遞它。
你可以設置一個全局屬性,但你真的不想這樣做。 – soulcheck