javascript - Meteor:在服务器上将电子邮件地址转换为MD5hash,并在客户端上访问

标签 javascript meteor server gravatar

所以我想在我的网站上使用 Gravatar 头像。我得到了合适的包。它的工作方式是将电子邮件地址转换为“MD5Hash”。它将发送到 Gravatar 以换取图像网址。

好吧,但我想在不暴露每个人的电子邮件地址的情况下显示头像。与此同时,我的用户可能已经拥有了头像,我认为如果有一天他们的头像突然出现,而不需要向用户个人资料集合添加另一个字段或要求他们这样做,那就太酷了。

有没有办法在服务器上完成一些操作并实现我的目标?

Handlebars.registerHelper("gravatar", function(id){
    var email = Meteor.users.findOne({_id: id}).emails[0].address;
    var options = { 
        secure: true,
        size: 29,
        default: 'retro'
    };

    var md5Hash = Gravatar.hash(email);
    // 5658ffccee7f0ebfda2b226238b1eb6e

    var url = Gravatar.imageUrl(md5Hash, options);
    // https://secure.gravatar.com/avatar/5658ffccee7f0ebfda2b226238b1eb6e
    return url;
});

最佳答案

黑客:

在服务器上:

userArray = Meteor.users.find(query,{fields: {"emails.address": 1}}).fetch();
userArray.forEach(function(el,i,a){
  a[i] = { _id: el._id, md5hash: Gravatar.hash(el.emails[0].address) };
}

其中 query 是您的条件,将为您提供 _id_id 匹配的对象的数组> 每个用户的 md5hash 值是该用户电子邮件的哈希值。您可以设置一个方法,在需要时将这个数组返回给您。

好消息是,您的客户可以使用这些哈希值随时获取所需大小的头像。

少一点黑客行为:

上述问题是您的服务器经常会重新计算每封电子邮件的 md5hash。另外,您将从服务器获得一个可能很大且非 react 性的数组。你会为此而后悔的。您实际上只想将 md5hash 键添加到用户文档中的 emails 数组中,为现有用户初始化它,并确保新用户始终将此键设置为创建时间。这将允许您处理单个电子邮件地址用户或多电子邮件地址用户。

关于javascript - Meteor:在服务器上将电子邮件地址转换为MD5hash,并在客户端上访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282253/

相关文章:

javascript - d3.js - 如何正确排列 `squre` 周围的 `circle` 框

javascript - meteor 中的 Node js 二进制文件有什么用?

meteor - 如何使用Centos7在生产服务器中部署meteor应用程序

java - Netbeans:无法集成 Tomcat (Ubuntu)

javascript - 如何在实时服务器上上传 nodejs 项目或安装 nodejs 和 npm 模块

Python 文件在浏览器窗口中打开而不是下载提示

javascript - meteor JS : Inconsistency with Meteor JS when dealing with cursors?

javascript - 如何正确阻止 Node.JS 服务器应用程序中的 IP 地址?

javascript 重定向到 Controller 操作 asp.net mvc

meteor - 什么时候应该在 Meteor 应用程序中调用客户端自动订阅?