Meteor:发布一些用户数据

时间:2015-10-05 19:56:57

标签: meteor

我想发布一些关于我的用户的有限用户信息,我的想法是我的网络应用的管理员角色可以查看电子邮件地址和用户名(最后一个在个人资料数据中)。

Meteor.publish("usersSpecificDataforAdmin", function () {
    return Meteor.users.find({}, {fields: {
        'profile': 1,
        'emails': 1,
        'roles': 1
    }});

}); 我在我的路由器中订阅了这个:

adminRoutes.route('/users', {
  name: 'adminUsersList',
  subscriptions: function (params, queryParams) {
    this.register('adminUsersList', Meteor.subscribe('usersSpecificDataforAdmin'));
  },
  action: function (params, queryParams) {
    BlazeLayout.render('layout_frontend', {
      top: 'menu',
      main: 'adminUsersList',
      footer: 'footer'
    });
  }
});

在模板中,我使用以下内容显示用户的电子邮件地址:' {{emails.address}}',但这不起作用。我可以显示所有其他信息。

我有以下问题:

  • 如何在模板
  • 中显示用户的电子邮件地址
  • 即使我没有在发布中添加密码或服务字段,它也会发送给客户端(做Meteor.user())会泄露所有信息,包括密码等,这是一个安全问题在我看来。如何禁用此发布?

1 个答案:

答案 0 :(得分:3)

有几件事:

  1. 您不需要在要发布的字段列表中包含_id,它总是包含在内
  2. 您正在发布allUserData,但您的路由器代码正在订阅usersAllforAdmin,但您没有显示代码。我怀疑该出版物包括services
  3. 密码不存储在Meteor中的任何位置,只有密码的bcrypt哈希存储在services
  4. emails是一个数组,您无法在空格键中使用{{emails.address}}访问它,而是使用{{emails.[0].address}} (reference)