角色并锁定节点中的端点

时间:2016-02-07 15:57:12

标签: node.js mongodb express

我正在为我的游戏构建一个REST api。由于我是新手,因此我很难弄清楚如何“锁定”端点。从某种意义上说,我不希望任何人向我的游戏分数端点发布帖子请求并更新它。什么是防止这种情况的最佳解决方案?

1 个答案:

答案 0 :(得分:2)

您需要的是授权过程,常见的实施是ACL(访问控制列表),其中您所做的每个请求都必须包含一个令牌,该令牌与一组角色相关联,每个角色都有多个权限。在每个请求中,您检查该令牌对请求端点的权限,并查看是否允许请求者执行该操作。

有一些软件包很容易实现acl

如果您不想花太多时间自己这样做,我建议您查看Loopback

编辑:

在您的前端应用程序中,您可以使用以下内容:

app.all(['/api/*', '/fe/*'], function(req, res) {
    req.pipe(request({
        headers: { 'Authorization': process.env.AUTH_TOKEN },
        url: process.env.PROXY + req.url,
        method: req.method,
        body: req.body,
        rejectUnauthorized: false,
        withCredentials: true
    }))
    .on('error', function(e) {
        res.status(500).send(e);
    })
    .pipe(res);
});

该代码的作用是将任何以/ api /或/ fe /开头的请求传递给您的前端并将它们传送到后端服务器(process.env.PROXY)。

关键部分是process.env.AUTH_TOKEN,你可以在这里使用随机和大哈希。然后,在每个受保护的请求中,您的后端会检查标头是否与您选择的AUTH_TOKEN匹配。

这样做的好处是最终用户似乎永远不会看到该令牌,因为最终用户只会看到发送到您的前端服务器的请求。