javascript - ExpressJS + 智威汤逊。获取授权数据的正确方法是什么?

标签 javascript node.js express model-view-controller jwt

让我们跳到一个例子。我将跳过一些部分,例如导入、导出。

我有一个名为 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/

相关文章:

javascript - Grails Assets 管道未满足资源需求

node.js - Knexfile不读取环境变量?

node.js - 我可以在我的 Chrome 打包应用程序中使用 socket.io 吗?

node.js - 无法使用 node.js 为 gulp.js 安装 Sass 模块

javascript - 如何从 Nodejs 中的 post 请求中获取正文?

javascript - 如何遍历字符串并替换除最后一个句点以外的所有句点?

javascript - Typescript 集合未初始化

node.js - 如何使用 Express 2.5 在 node.js 中定义部分 View

javascript - 如何从谷歌地图API获取纬度和经度的地址?

javascript - 如何从 Node 表达渲染 Angular 组件