如何防止 Meteor 的帐户库自动发布当前用户的电子邮件?

问题描述

根据帐户包上的Meteor's documentation

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

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

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

解决方法

最直接的方法是修改 Accounts._defaultPublishFields.projection 的值并删除 email 键。在保留其他值的同时执行此操作的一种简单方法是使用静止和传播的组合,如下所示:

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

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

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