Meteor.js - 模板权限

时间:2013-03-29 18:11:12

标签: meteor

这已经以类似的形式herehere提出,但它看起来非常重要,而且框架正在快速发展,所以我将再次提出它:

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

示例用例:您有一些非常独特的分析/性能指标,您希望保密。您已构建模板以可视化每个模板。只需访问登录页面,Meteor就会发送任何rando模板,这些模板甚至是无人居住的,都会泄露大量的专有信息。

我见过两个建议:

  1. 将管理员分解为单独的应用。这不能解决假设管理员登录面向公共互联网的问题,除非我遗漏了一些内容。
  2. 将模板放入public文件夹或等效文件中并动态加载。这也没有用,因为文件名将从其他模板中可见,这些模板将被发送到客户。
  3. 我唯一能想到的是将模板字符串存储在server文件夹中,让客户端在登录后调用Meteor.method来检索和呈现它们。如果您希望它们像普通客户端模板一样运行,则必须使用内部API(例如Meteor._def_template)。

    还有更优雅的方法吗?

2 个答案:

答案 0 :(得分:0)

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

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

在那之前,我打算制作一个较小的“公共”应用程序并与管理员应用程序共享数据库(可能在Meteor中,可能在其他方面,取决于我的管理员的大小/数据)

答案 1 :(得分:0)

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

它使用铁路由器插件在每条路线上加载您的特定文件。

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