我可以避免将所有 js 提供给未登录的客户端吗?
Can I avoid serving all js to clients not logged in?
在构建 Meteor 应用程序时,是否可以不将所有生成的 javascript 提供给/加载到客户端,直到用户进行身份验证?
如果没有人能看到我的模板、模型、助手等,我会更高兴......
澄清:
这不是关于将内容放在/server下,或者对pub/sub做正确的事情。
这是关于不向未经身份验证的用户发送不必要的内容,不是因为它存在安全风险,而只是为了尽可能多地向世界隐藏。
我一直在使用路由器包来完成此操作。
在主 html 文件中,添加{{renderPage}}
您希望路由器呈现模板的位置。然后,在定义路由时,可以根据路径和任何其他变量指定要呈现的模板。
例如,如果要在不呈现任何受保护模板的情况下显示登录屏幕,则可以执行以下操作:
Meteor.Router.page();
Meteor.Router.add({
'/': function() {
if (Meteor.userId()) {
return 'protectedContentTemplate';
}
else {
return 'userUnauthorizedTemplate';
}
},
});
当然,您应该始终使用Meteor.publish()
和Collection.allow()
功能锁定您的集合,以便未经授权的用户无法访问他们也不应该访问的信息。
确定目前不可能有选择地在 Meteor 应用程序中加载脚本。一个例外是,您可以通过将任何敏感代码放在/server
目录中(不会发送到客户端(来保护它,并按照 Coffey 建议@Patrick锁定数据(也使用 Meteor method
s(。如果这样做,则不必向客户端透露完整的模型架构、身份验证规则或敏感算法,并且可以严格控制哪些记录甚至记录字段对客户端可见。它运行良好,您可以通过使 API 的开放程度来选择所需的便利性/性能级别与安全性级别。
如果你的模板和帮助程序很敏感,你必须等到引入服务器端渲染(它在路线图上(,或者在没有 Meteor 帮助的情况下制定自己的解决方案,但我认为可能有理由更深入地研究这个问题。您担心的前提似乎是经过身份验证的用户在某种程度上比未经身份验证的用户更值得信赖,但在大多数情况下(即使在公司内部(,也可能存在不可信的用户 - 或者帐户被黑客入侵的用户 - 这些人将始终可以访问您发送到浏览器的任何内容。因此,从这个角度来看,确保无论如何都不会将重要机密放在模板或客户端代码中是有意义的。但是,对于大多数应用程序,模板和帮助程序不会敏感,如果您设置好服务器,被黑的模板将无法访问普通模板无法访问的任何内容。
- 如何为在客户端检查其密码的用户创建登录页面
- 有没有办法使用Google's Javascript客户端登录时没有弹出窗口
- Facebook使用Parse客户端站点登录,使用Express js的用户对象
- Meteor:当客户端使用 LinkedIn 登录时,首先进行身份验证时创建用户帐户
- 我可以避免将所有 js 提供给未登录的客户端吗?
- 检查用户是否已在客户端登录
- 在客户端的请求中使用以 JSON 格式传递的登录信息
- 使用SAML令牌,JSON Web服务的客户端-登录网站后
- 使用REST API和Javascript客户端,如何在页面刷新后保持登录
- 登录页面:客户端到服务器的请求被发送两次?Node.js, AngularJS, express framework
- 登录后从网站获取数据,客户端
- 我将如何处理从客户端发送登录数据到服务器与Backbone.js
- 找不到OAuth客户端.谷歌登录api
- 如何管理谷歌登录会话(谷歌登录JavaScript客户端)
- 如何获取客户端的用户名,在JS或php中登录到客户端机器
- 快速服务器与护照twitchtv可以'我的angularjs客户端无法登录工作
- 使用Node express后端为移动客户端登录Facebook
- 如何在客户端制作HTML登录页面
- 检查Facebook登录状态:客户端vs服务器端
- 最好的方式来检查用户是否登录与node.js和表达和更改客户端html