【问题标题】:Meteor.js - Template PermissionsMeteor.js - 模板权限
【发布时间】:2015-05-23 22:32:58
【问题描述】:

这个问题问过herehere类似的形式,但是看起来很重要,而且框架正在快速开发中,所以我要再次提出它:

假设您的登录页面需要面向公共互联网,您如何防止 Meteor 将所有经过身份验证的用户模板发送到未经过身份验证的客户端?

示例用例:您有一些非常独特的分析/性能指标想要保密。您已经构建了模板来可视化每个模板。只需访问登录页面,Meteor 就会向任何随机发送模板,即使是未填充的模板,也会泄露大量专有信息。

我看到了两个建议:

  1. 将管理员拆分为一个单独的应用程序。这并不能解决假设管理员登录面向公共互联网的问题,除非我遗漏了什么。
  2. 将模板放在public 文件夹或等效文件夹中并动态加载它们。这也无济于事,因为文件名将从将发送到客户端的其他模板中可见。李>

我唯一能想到的是将模板字符串存储在server 文件夹中,并让客户端在登录后调用Meteor.method 来检索和呈现它们。如果你想让它们表现得像普通的客户端模板,你就必须使用内部 API(例如,Meteor._def_template)。

有没有更优雅的方法来做到这一点?

【问题讨论】:

  • 目前这些是最优雅的方式!我想你可能也看过上面的流星谈话?更优雅的一种是使用meteor方法将模板发送下来,使用.def_templates将它们加载到meteor中
  • 我没有看到流星谈话,但我发现了它。对于其他人,相关线程是here
  • 我是发起线程的人,所以我想我必须完成我的代码 sn-p 完成所有工作并将其推送到 github。

标签: meteor


【解决方案1】:

我在这里问了一个类似的问题: Segmented Meteor App(s) - loading only half the client or two apps sharing a database

似乎是一个普遍的问题,我当然认为这是应该在某个时候解决的问题。

在那之前,我正计划制作一个较小的“公共”应用程序并与管理应用程序共享数据库(可能在 Meteor 中,也可能在其他东西中,具体取决于我的管理员的大小/数据)

【讨论】:

    【解决方案2】:

    这两个包试图解决这个问题:
    https://atmospherejs.com/numtel/publicsources
    https://atmospherejs.com/numtel/privatesources

    它使用 Iron-router 插件在每条路线上加载您的特定文件。

    我在这里看到的主要缺点是您必须更改应用程序结构,因为受保护的文件需要存储在 /public/private 文件夹中。
    你也应该使用铁路由器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多