【问题标题】:Meteor: Need simple approach for admin CRMMeteor:管理员 CRM 需要简单的方法
【发布时间】:2016-08-16 01:49:54
【问题描述】:

我试图想出一种方法来保护一组管理 CRM 页面,这些页面控制着我正在开发的 Meteor 应用程序。只有一个代码库,在一个项目中包含服务器、面向客户的网站和面向管理员的网站。

我需要一个可以验证一个用户名和密码对的登录页面,以及一种在客户端和服务器端检查用户状态的简单方法。如果 x 分钟未使用,我还需要一种管理员授权超时的方法。

我查看了流星帐户包,这对于我需要的东西来说实在是太多了。这个网站永远只有一个管理员用户,所以只有一组管理员用户名和密码可以存储。我不希望它存储在数据库中,而是在应用程序启动时在服务器上加载一个设置文件。它不需要角色、电子邮件、密码重置功能。

对于我可以用来实现这一点的包或方法有什么建议吗?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    我知道你说过 accounts:password 包看起来有点“矫枉过正”,但实际上并非如此。您在那里获得的是可插入的 UI(通过 accounts-ui 和其他构建它的包)。我采用的方法是这样的(即使对于支持多用户的应用程序也能很好地工作,因为最终你仍然需要引导你的初始用户)。

    首先,我使用帐户:密码和alanning:角色的组合。如果您绝对不需要角色部分,则可能没有它,但在我所有的个人情况下,我发现为各种用户提供多个级别的 ACL 很有用。我们可以就使用角色/组来锁定单个功能进行完整的哲学讨论,但这有点偏离本次讨论的主题。

    接下来,您需要引导用户。在您的 /server 文件夹中的某处,您将执行以下操作:

    if (Meteor.users.find({}).count() == 0) {
      // No users created...create default users
      Accounts.createUser({
        username: 'myuser',
        email: 'myuser@mydomain.com',
        password: 'myp4ssw0rd!',
        profile: { profileProp: 'propVal` }
      });
      // Add new user to whatever roles needed
    }
    

    我通常在这里做更多的事情,比如检查我的角色是否存在,如果不存在,则在我尝试处理用户之前创建它们,但这里的关键是在服务器启动时执行此操作。

    创建用户和角色后,您需要检查/验证应用中的用户/角色。对于菜单项,您可以根据用户是否登录和/或是否具有特定角色来显示/隐藏内容,并且您还应该在需要 ACL 的应用程序路由中进行验证,例如您的管理员路由。此外,还要在所有出版物中使用用户 ID 来限制用户可以看到的数据。不要仅仅依靠隐藏菜单选项...通过默默无闻的安全性是行不通的。

    为什么我建议这样做?首先,它真的没有那么多代码。您可以在最多 20 行内完成此操作,并拥有完整的身份验证设置。并且这些代码行的好处大大超过了花费 30 分钟的时间,因为您现在将在您的应用程序中拥有“真正的”用户身份验证,并且如果您将来决定这样做,则可以执行 OAuth 之类的事情。最重要的是,您解锁了无需编写代码的预构建 UI 插件、帮助检查 ACL 的内置和附加方法、按用户锁定数据的能力,并且您不必尝试实施您自己的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2017-04-17
      • 2013-05-17
      相关资源
      最近更新 更多