让我们跳到一个例子。我将跳过一些部分,例如导入、导出。
我有一个名为 controllers/book.js 的 Controller ,它有一个路由:
router.get('/my-books', function(req, res) {
if(Auth.authenticated(req,res)) {
Book.getMyBooks(function(rows) {
response.operationSucceed(req, res, rows);
});
}
});
然后,在一个名为 models/book.js 的模型中,我有这个功能:
function getMyBooks(successCallback) {
db.query('SELECT * FROM book b WHERE b.id_user=?', [Auth.getLoggedUID()], function(rows) {
successCallback(rows);
});
}
我的问题是关于 Auth.getLoggedUID 函数的。
假设我有一个 JWT 身份验证并假设我在有效负载中有一个 UID(这甚至可以接受吗?),检索它的最佳选择是什么?除了每次将 req
传递给我需要身份验证数据的每个函数之外,是否有任何东西?
我可能在一个函数中有一个函数执行,我需要通过它们都传递 req
来获取用户 ID 吗?像这样吗?:
function getBooks(req) {
getMyBooks(req);
getCriminalBooks(req);
getEvenOtherBooksByAuthor(req, authorId);
}
老实说,我不喜欢那样。 也许我的整个概念是错误的,我应该以不同的方式做事? 有人可以在这种情况下为我指明正确的方向吗?
最佳答案
您可以在 header 中传递 UID 并在您的 Controller 中检索它:
var uid =req.header('UID');
然后将此 UID 传递到任何你想要的地方,而无需在任何地方结转整个 req 对象。
关于javascript - ExpressJS + 智威汤逊。获取授权数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475831/