【问题标题】:how to create ACL with mongoose-acl node.js如何使用 mongoose-acl node.js 创建 ACL
【发布时间】:2012-09-29 05:56:18
【问题描述】:

我找到了这个用于为 mongoose 创建 ACL(访问控制列表)的库: https://github.com/scttnlsn/mongoose-acl

它看起来像一个不错的模块,但我对如何将它用于我的目的有点困惑。

我有一个网站,任何人(无论是否登录)都可以访问个人资料页面,例如 example.com/users/chovy

但是,如果用户 'chovy' 登录到此页面,我想授予他们管理员权限以编辑帐户的详细信息。

如果用户不是“chovy”或未登录,他们只会看到“chovy”的只读个人资料页面。

谁能给我一个具体的例子来说明我将如何做到这一点?

【问题讨论】:

    标签: node.js express mongoose acl


    【解决方案1】:

    这听起来很常见,我认为您不需要 ACL。您将需要有会话,然后您可以根据当前登录的用户更改视图的外观。一个不完整的例子是这样的:

    // Assumes:
    // - You set req.session.user when user logs in
    // - The url route has a :name so you can do req.param() to get the name of the page being viewed
    
    db.users.getCurrentUser(req.session.user, gotLoggedInUser)
    db.users.getUserByName({name: req.param('name')}, gotUser)
    

    然后将其传递给视图,当您执行 res.render() 时:

    var is_viewing_own_page = currentUser._id.toString() === loggedInUser._id.toString()
    

    然后视图可以做这样的事情(假设是玉):

    - if (is_viewing_own_page)
      div You are looking at your own page
    - else
      div You are viewing someone else's page
    

    【讨论】:

    • 谢谢,这看起来像我的想法,只是想知道是否有更好的方法。 db.users.getCurrentUser() 方法和 db.users.getUserByName() 方法是做什么的?这些是猫鼬特有的吗?
    • 用例非常简单,所以我推荐这种方式。使用 ACL 将用于更复杂的情况。这些是用户模式上的自定义方法。查看文档中的“实例方法”:mongoosejs.com/docs/guide.html
    猜你喜欢
    • 2013-02-25
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多