我想在AppDelegate.m中编写代码,以检查PFUser.currentUser凭证是否仍然有效。我这样做的原因是针对这种情况。假设用户已成功登录,并且currentUser现在具有该用户的基本信息。如果用户在应用程序启动时在某个时间更改了密码,则应检查这些凭据是否最新。如果电子邮件和密码与表中的不匹配,则应注销用户。

我尝试这样做,但是当PFUser.currentUser.password具有用于登录的电子邮件的实际值时,显然PFUser.currentUser.email始终设置为null。如何在无法访问密码的情况下实现此验证?

这是我需要指导的代码:

PFQuery *query = [PFQuery queryWithClassName:@"User"];
[query whereKey:@"objectId" equalTo: PFUser.currentUser.objectId];
[query whereKey:@"password" equalTo: PFUser.currentUser.password];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {

        if (!object) {
            /*Credentials changed! Logout user and request login again*/
            NSLog(@"Credentials Changed!");
            [PFUser logOut];
            [[[navigationController viewControllers] objectAtIndex:0] performSegueWithIdentifier:@"loginSegue" sender:self];
        }
        else {
            /*Credentials are still valid..proceed!*/
            NSLog(@"Credentials Correct!");
            [[[navigationController viewControllers] objectAtIndex:0] performSegueWithIdentifier:@"skipLoginSegue" sender:self];
        }
    }];

当失败时,我尝试输入NSLog密码并得到null,因此我知道这是问题所在。

最佳答案

我将使用主键编写一个云代码功能:Parse.Cloud.useMasterKey();
将其包含在函数中后,您将可以访问/检查用户密码并发送回“已验证”变量或类似的变量。

这是我用于修改用户的云代码功能,但是您可以轻松地对其进行修改以验证用户的信息。在解析论坛上还有很多答案,以及文档中的很多信息。

Parse.Cloud.define("editUser", function(request, response) {
  //var GameScore = Parse.Object.extend("SchoolHappening");
  // Create a new instance of that class.
  //var gameScore = new GameScore();
Parse.Cloud.useMasterKey();

  var query = new Parse.Query(Parse.User);
query.get(request.params.myUser, {
  success: function(myUser) {
    // The object was retrieved successfully.
    myUser.set("cabinetPosition", request.params.myPosition);
    // Save the user.
      myUser.save(null, {
        success: function(myUser) {
          // The user was saved successfully.
          response.success("Successfully updated user.");
        },
        error: function(gameScore, error) {
          // The save failed.
          // error is a Parse.Error with an error code and description.
          response.error("Could not save changes to user.");
        }
      });

  },
  error: function(object, error) {
    // The object was not retrieved successfully.
    // error is a Parse.Error with an error code and description.
  }
});

});

关于ios - iOS解析验证用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25093369/

10-14 20:59
查看更多