首页 > 解决方案 > 如何防止 Meteor 的帐户库自动发布当前用户的电子邮件?

问题描述

根据Meteor关于 Accounts 包的文档:

默认情况下,当前用户的用户名、电子邮件和个人资料会发布到客户端。

是否可以阻止 Meteor 自动发布这些字段?我知道这仅适用于已登录的用户,但该用户可以散步或在公共场所在线。

这种代码结构似乎是在accounts_server.js中定义的(搜索 autopublish 和 email - 第 37 和 696 行)。

标签: meteormeteor-accountsmeteor-publications

解决方案


最直接的方法是修改Accounts._defaultPublishFields.projection并删除 emails 键的值。在保持其他值的同时做到这一点的一种简单方法是使用 rest 和 spread 的组合,如下所示:

import { Accounts } from 'meteor/accounts-base';

const { emails, ...fields } = Accounts._defaultPublishFields.projection;
Accounts._defaultPublishFields.projection = { ...fields };

只要确保它在服务器上运行,你就可以开始了。


推荐阅读