在 Meteor 中,如何只为登录用户加载一些文件?
In Meteor, how to load some file only for logged in users?
我正在尝试使用 Meteor 创建管理面板。我不想向普通用户加载任何与管理面板相关的 js 和 html 文件。仅当用户登录时才需要加载它们。我怎样才能做到这一点? (我使用 FlowRouter 来管理路由)
使用全局助手
Template.registerHelper('isLoged', function () {return Meteor.userId() != null});
if(isLoged()) {// yes login user} else { //redirect }
首先,让我们注意何时实际加载文件。 Meteor.user()
is a reactive data source we can use in Tracker computations :
Tracker.autorun(() => {
if(Meteor.user()) {
loadUserFiles()
}
})
您可以通过 HTTP 调用、DOM、jQuery、您自己的 DDP 魔法加载这些文件...
如何加载它们是一个相当广泛的问题。只需确保在服务器端检查请求者是登录用户即可。
现在,根据您的用例,您可能希望以这种方式加载两种不同类别的文件:
基本资源文件
这些包括 CSS、图像、HTML、JS、视频或音乐 (...) 文件,您希望 fiddle 添加到 DOM .您执行此操作的方式类似于任何其他资源请求,已经存在大量资源可以使用 jQuery/Node 请求组合很好地完成此操作,并且您无需更改任何内容即可使其在 Meteor 中工作。
如果您使用 HTML 请求,您可能需要使用 WebApp.rawConnectHandlers
进行服务器端用户检查。
HTML 模板文件
这比较棘手。还有。因为模板是在服务器端编译并作为 JavaScript 代码发送的,要将模板发送给您的一部分用户,您需要更改 Meteor 构建文件的方式(或者可能使用精心制作的包)才能单独加载模板。
但是我认为这不是正确的方法。模板只是一种显示 数据 的方式。如果您控制将 数据 发送给谁,那么如果注销的用户访问受保护的模板,他只会看到错误和空格。
请注意,模板助手文件属于 "Basic resource" 类别,因此以这种方式加载一些额外的助手是有意义的。您将使注销的客户端免受死代码的影响。
我正在尝试使用 Meteor 创建管理面板。我不想向普通用户加载任何与管理面板相关的 js 和 html 文件。仅当用户登录时才需要加载它们。我怎样才能做到这一点? (我使用 FlowRouter 来管理路由)
使用全局助手
Template.registerHelper('isLoged', function () {return Meteor.userId() != null});
if(isLoged()) {// yes login user} else { //redirect }
首先,让我们注意何时实际加载文件。 Meteor.user()
is a reactive data source we can use in Tracker computations :
Tracker.autorun(() => {
if(Meteor.user()) {
loadUserFiles()
}
})
您可以通过 HTTP 调用、DOM、jQuery、您自己的 DDP 魔法加载这些文件...
如何加载它们是一个相当广泛的问题。只需确保在服务器端检查请求者是登录用户即可。
现在,根据您的用例,您可能希望以这种方式加载两种不同类别的文件:
基本资源文件
这些包括 CSS、图像、HTML、JS、视频或音乐 (...) 文件,您希望 fiddle 添加到 DOM .您执行此操作的方式类似于任何其他资源请求,已经存在大量资源可以使用 jQuery/Node 请求组合很好地完成此操作,并且您无需更改任何内容即可使其在 Meteor 中工作。
如果您使用 HTML 请求,您可能需要使用 WebApp.rawConnectHandlers
进行服务器端用户检查。
HTML 模板文件
这比较棘手。还有
但是我认为这不是正确的方法。模板只是一种显示 数据 的方式。如果您控制将 数据 发送给谁,那么如果注销的用户访问受保护的模板,他只会看到错误和空格。
请注意,模板助手文件属于 "Basic resource" 类别,因此以这种方式加载一些额外的助手是有意义的。您将使注销的客户端免受死代码的影响。