Passwords Parse.com验证Parse.Cloud.beforeSave(Parse.User)中密码要求的过程

Passwords Parse.com验证Parse.Cloud.beforeSave(Parse.User)中密码要求的过程,passwords,parse-platform,Passwords,Parse Platform,我正试图通过Parse.com找到添加密码要求的最佳程序。似乎最简单的方法是在保存用户数据之前使用云函数执行。我唯一的警告是,我只想在密码与数据库中存储的密码不同或用户不存在时验证用户密码在数据库中 Parse.Cloud.beforeSave(Parse.User,函数(请求,响应){ ... } 两个问题: request.object.existed()在beforeSave函数中是否像在afterSave中一样工作 我可以通过beforeSave函数中的request.object访问用

我正试图通过Parse.com找到添加密码要求的最佳程序。似乎最简单的方法是在保存用户数据之前使用云函数执行。我唯一的警告是,我只想在密码与数据库中存储的密码不同或用户不存在时验证用户密码在数据库中

Parse.Cloud.beforeSave(Parse.User,函数(请求,响应){ ... }

两个问题:

  • request.object.existed()在beforeSave函数中是否像在afterSave中一样工作
  • 我可以通过beforeSave函数中的request.object访问用户的密码(使用Parse.Cloud.useMasterKey()),还是需要在函数中查询用户的对象
  • 在日志中,beforeSave函数的输入似乎具有与下面的json类似的原始和更新密钥。但是,我无法通过request.object访问原始和更新json。我如何访问此数据?如果只需要执行检查来验证用户的密码是否已更改,那就太好了如果比较request.object.original.password!==request.object.updated.password
  • cloudcode日志输出示例:

    输入:{“原件”:{“电子邮件”:“废话”, “名字”:“废话”, “emailVerified”:正确, “用户名”:“废话”, “createdAt”:“2014-04-28323:05:47.452Z”, “更新日期”:“2014-0716T01:55:52.907Z”,
    “objectId”:“废话”, “sessionToken”:“废话”},
    “更新”:{“firstname”:“blah2”}

    试试这样的方法:

    Parse.Cloud.beforeSave(Parse.User, function(request, response) {
    
      if (request.object.isNew()) {
          // new object.. 
          response.success();
      } else {
        if (request.object.dirtyKeys().indexOf("password") > -1) {
          // Attempted to change the password.
          response.error('No.');
        }
      }
    
    });
    

    谢谢。这段代码似乎就是我要找的。我在哪里可以找到request.object的api?.isNew()和.dirtyKeys()在此之前我都不知道。你可以在这里找到所有的方法和属性:谢谢,url非常有用。但是,我需要通过“选择新密码”来验证用户的新密码通过Parse.User.requestPasswordReset()创建的电子邮件将用户定向到的应用程序自定义面向用户页面的模板。我假设用户通过此新密码模板页面更改密码将触发Parse.Cloud.beforeSave(Parse.User)。我运行了几个测试,但似乎没有发生。当用户通过Parse.User.requestPasswordReset()函数更改密码时,是否有方法使用beforeSave cloud函数?