自定义电子邮件验证 - 无法设置email验证

时间:2015-12-21 16:40:04

标签: php email parse-platform cloud-code mandrill

我正在尝试为用户注册实施自定义电子邮件验证。默认的只发送纯文本消息,但我们想发送HTML格式的消息。

目前的做法:

  1. 使用Cloud Code,功能Parse.Cloud.beforeSave("Parse.User"…会在用户的confirmationToken'中设置生成的令牌。字段
  2. 相同的功能使用 MailChimp Mandrill Cloud Module服务向用户发送格式化的电子邮件,包括confirmationToken的确认链接{{3} }} confirmationToken
  3. 用户点击链接,我们的网站通过HTTP GET请求获取令牌
  4. 网站运行http://www.our-website.com/confirm_email.php?confirmationToken=并查询用户数据库,以便为用户提供与请求中的令牌匹配的confirmationToken字段值
  5. 如果找到了用户,我们会尝试将emailVerified字段设置为true ...
  6. 现在问题出在这里。 emailVerified字段似乎受到保护。尝试设置它会为您提供ParseException' InvalidKeyName' (的 105 )。现在,我可以使用另一个字段,但问题是我们之前已经设置了默认的Parse电子邮件验证,我们的应用程序正在emailVerified中查找该值。用户已使用默认电子邮件验证进行注册,我们无法仅因为部署了应用而对其进行了更改。

    我们有什么方法可以设置emailVerified字段吗? 任何人都可以想到一个解决方案,它也适用于已经在检查这个领域的应用程序,即使将来我们还要设置另一个? 如果您禁用电子邮件验证(现在它仍然启用),该字段是否仍受保护?

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我想补充一点,我们已经在Parse 60天前部署了一个应用程序,平均每周有2,000个新用户需要进行电子邮件验证。我们的用户主要是政府(很多.gov' s)。我们每天花费数小时处理Zendesk中没有收到验证链接的用户的支持票。支持正在压制我们。

我意识到锁定该字段的意图,但如果我收到用户发来的电子邮件,那么我的验证就足够了,这样可以节省我们将电子邮件验证为真的时间。

请重新考虑让开发人员自己做出这个决定。

答案 1 :(得分:1)

不幸的是,即使使用主密钥,也无法设置emailVerified属性。唯一的选择是创建自定义验证属性以与自定义验证逻辑一起使用。

我采取的方法是:

  1. 使用新字段
  2. 构建并测试新方案
  3. 运行迁移,使用用户填充新属性' emailVerified
  4. afterSave中为任何Parse.User
  5. 调用相同的逻辑
  6. 修改客户端以检查新属性
  7. 我意识到第4步违反了问题的前提,但您的应用必须在客户可以并且将要修改的前提下设计。如果不是这个问题,那将是另一个问题。运营条件将发生变化,您的客户也必须如此。