javascript - 如何防止 Ember Rails 模板泄漏到浏览器中?

标签 javascript ruby-on-rails ember.js

我正在考虑从 AngularJS 切换到 Ember 作为我正在使用的几个 Rails 应用程序的前端框架。但让我有点坐立不安的是如何以及何时将模板 HTML 发送到浏览器。

使用 Angular,我通常会设置一个 Rails 端点,例如 /api/v1/foo ,这样调用 foo.html 将渲染出模板并调用 foo.json 将渲染出其数据;如果我想保护 foo,我会将整个端点放在 before_action :some_auth_method 过滤器后面,有效地阻止对模板和模板的未经授权的访问 数据。

使用 Ember,看起来好像预编译的 Handlebars 模板都以一大块的形式发送到浏览器,这样邪恶的访问者就可以轻松地看到它们的样子——剥夺了数据,这是真的,但我仍然不确定我是否愿意将应用程序内部运作的模糊细节泄露给每一个发生的汤姆、迪克和哈基。

所以我的第一个问题当然是:我错过了什么吗?如果我不是,那么:有什么办法可以解决这种行为吗?

最佳答案

不,你没有错过任何东西,这就是 Ember 开箱即用的工作原理。有办法解决这种行为吗?大概。但在尝试解决这个问题之前,您应该认真考虑这是否真的值得。您真的关心是否有人拥有您网站的 HTML 模板吗?如果您的安全设置正确,您就不必关心。但如果你确实关心,我可能会这样做:

  1. 在服务器上设置路由以检查对客户端上路由的访问。
  2. 设置一种将模板从服务器发送到客户端的方法。我要么发送预编译模板,然后使用 eval() 获取函数,要么发送 HTML 并使用 Handlebars 编译器在客户端进行编译。
  3. 如果您的 beforeModel Hook 了路线,请检查对该路线的访问。如果用户有访问权限,则获取模板,将其存储在 Ember.TEMPLATES 中,然后让用户进入。如果用户没有访问权限,请将其重定向到其他地方。

您的问题中没有太多详细信息,因此我无法提供更具体的信息,但是类似这样的内容将允许您根据需要异步加载模板。有一个类似的讨论on the Ember forum .

关于javascript - 如何防止 Ember Rails 模板泄漏到浏览器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074074/

相关文章:

javascript - 将 ember.js 应用程序部署到 Heroku

javascript - Nodejs - 如何将数据从 html 发送到 hapi

javascript - 将 JSON 值从 JavaScript 传递到 JSP

javascript - Redux 操作工厂不适用于参数

ruby-on-rails - Rails 应用程序之间的通信

javascript - Ember.js 嵌套的 ArrayController 和模型

javascript - 在 Firebase 数据库 JavaScript v9 中使用 equalTo() 函数

ruby-on-rails - 如何以嵌套形式获取子项的索引

html - Rails 样式化表单标签与物化 css

javascript - Ember.js 从 Controller 调用模型的方法