控制/限制Mongo-Database中的用户特定内容

时间:2016-06-26 21:18:14

标签: node.js mongodb express mongoose

我想知道如何控制/限制不同用户对存储在mongodb中的内容的访问(通过mongoose访问)。假设有一个数据模型可以存储用户的最后遗嘱。

我的方法是:

  1. 登录:通过用户名和密码进行身份验证,在会话中存储用户名。
  2. 中间件:检查登录状态,查询用户模型以查找存储的用户名并返回用户ID,将其附加到req-object(req.userId)
  3. 在点击路线获取实际内容时(最后一个模型):使用两个条件查询will-model:匹配willId和匹配userId(也存储在will-model中)
  4. 这是否合理甚至保存?无法找到任何最佳实践,所有示例基本上都以身份验证结束。

2 个答案:

答案 0 :(得分:2)

使用这三种方法中的任何一种都可以实现授权,IMO我选择的选项是使用中间件。

  

这将是一个更清洁的选择,对代码几乎没有影响   功能和易于维护,以便将来的变化,也分开   认证和授权的概念。

我从未使用过,但请记住在我必须制作的项目中使用this package。您可以定义规则,然后在特定路线上使用它。

app.get('/', *user.can('access home page'), function (req, res) {
    res.render('private');
});
app.get('/private', *user.can('access private page'), function (req, res) {
    res.render('private');
});
app.get('/admin', *user.can('access admin page'), function (req, res) {
    res.render('admin');
});

*预定义规则

答案 1 :(得分:2)

使用passport-local可以涵盖步骤1和2,尽管手动实施并不困难。

第3步是合理的,因为遗嘱属于用户,并且需要willIduserId来确定该用户是否应该有权访问特定的遗嘱文件。

由于安全性基于会话ID,因此您显然应使用HTTPS并使用httpOnlysecure session cookies