自定义电子邮件验证 - 无法设置 emailVerified
Custom email verification – cannot set emailVerified
我正在尝试为用户注册实施自定义电子邮件验证。默认只发送纯文本消息,但我们要发送 HTML 格式的消息。
目前的做法:
- 使用 Cloud Code,函数
Parse.Cloud.beforeSave("Parse.User"…
在用户的“confirmationToken
”字段中设置生成的令牌
- 相同的函数使用 MailChimp 的 Mandrill Cloud Module service to the user, including a confirmation link with the
confirmationToken
like this http://www.our-website.com/confirm_email.php?confirmationToken=confirmationToken
发送格式化的电子邮件
- 用户点击link,我们网站通过HTTP GET请求获取token
- 该网站运行 Parse PHP SDK 并查询用户数据库以获取具有与请求中的令牌匹配的
confirmationToken
字段值的用户
- 如果找到用户,我们会尝试将
emailVerified
字段设置为 true
…
问题来了。 emailVerified
字段似乎受到保护。尝试设置它会给你一个 ParseException
'InvalidKeyName' (105)。现在,我可以使用另一个字段,但问题是我们之前已经设置了默认的 Parse 电子邮件验证,而我们的应用程序正在 emailVerified
中寻找该值。用户已经注册了默认的电子邮件验证,我们不能因为部署了应用程序就更改它。
有什么方法可以设置 emailVerified
字段吗?
任何人都可以想出一种解决方案,该解决方案也适用于已经检查该字段的应用程序,即使将来我们必须设置另一个吗?
如果您禁用电子邮件验证,该字段是否仍然受到保护(现在它仍然启用)?
非常感谢任何帮助。
不幸的是,emailVerified
属性无法设置,即使使用主密钥也是如此。唯一的选择是创建自定义验证属性以配合自定义验证逻辑。
我将采用的方法是:
- 使用新字段构建并测试新方案
- 运行 使用用户的
emailVerified
填充新属性的迁移
- 对任何
Parse.User
在 afterSave
中调用相同的逻辑
- 修改客户端以检查新属性
我意识到第4步违反了问题的前提,但是您的应用程序必须在客户端可以并且将被修改的前提下设计。如果不是这个问题,那将是另一个问题。运营条件会改变,您的客户也必须改变。
我想补充一点,我们在 60 天前在 Parse 上部署了一个应用程序,平均每周有 2,000 个新用户需要电子邮件验证。我们的用户主要是政府(很多 .gov's)。我们每天花费数小时在 Zendesk 中处理未收到验证的用户的支持票 link。支持让我们崩溃。
我意识到锁定该字段的意图,但如果我收到用户的电子邮件,这对我来说就足够了,它将为我们节省大量时间将 emailVerified 切换为 true。
请重新考虑让开发人员自行做出此决定。
我正在尝试为用户注册实施自定义电子邮件验证。默认只发送纯文本消息,但我们要发送 HTML 格式的消息。
目前的做法:
- 使用 Cloud Code,函数
Parse.Cloud.beforeSave("Parse.User"…
在用户的“confirmationToken
”字段中设置生成的令牌 - 相同的函数使用 MailChimp 的 Mandrill Cloud Module service to the user, including a confirmation link with the
confirmationToken
like this http://www.our-website.com/confirm_email.php?confirmationToken=confirmationToken
发送格式化的电子邮件
- 用户点击link,我们网站通过HTTP GET请求获取token
- 该网站运行 Parse PHP SDK 并查询用户数据库以获取具有与请求中的令牌匹配的
confirmationToken
字段值的用户 - 如果找到用户,我们会尝试将
emailVerified
字段设置为true
…
问题来了。 emailVerified
字段似乎受到保护。尝试设置它会给你一个 ParseException
'InvalidKeyName' (105)。现在,我可以使用另一个字段,但问题是我们之前已经设置了默认的 Parse 电子邮件验证,而我们的应用程序正在 emailVerified
中寻找该值。用户已经注册了默认的电子邮件验证,我们不能因为部署了应用程序就更改它。
有什么方法可以设置 emailVerified
字段吗?
任何人都可以想出一种解决方案,该解决方案也适用于已经检查该字段的应用程序,即使将来我们必须设置另一个吗?
如果您禁用电子邮件验证,该字段是否仍然受到保护(现在它仍然启用)?
非常感谢任何帮助。
不幸的是,emailVerified
属性无法设置,即使使用主密钥也是如此。唯一的选择是创建自定义验证属性以配合自定义验证逻辑。
我将采用的方法是:
- 使用新字段构建并测试新方案
- 运行 使用用户的
emailVerified
填充新属性的迁移
- 对任何
Parse.User
在 - 修改客户端以检查新属性
afterSave
中调用相同的逻辑
我意识到第4步违反了问题的前提,但是您的应用程序必须在客户端可以并且将被修改的前提下设计。如果不是这个问题,那将是另一个问题。运营条件会改变,您的客户也必须改变。
我想补充一点,我们在 60 天前在 Parse 上部署了一个应用程序,平均每周有 2,000 个新用户需要电子邮件验证。我们的用户主要是政府(很多 .gov's)。我们每天花费数小时在 Zendesk 中处理未收到验证的用户的支持票 link。支持让我们崩溃。
我意识到锁定该字段的意图,但如果我收到用户的电子邮件,这对我来说就足够了,它将为我们节省大量时间将 emailVerified 切换为 true。
请重新考虑让开发人员自行做出此决定。