我正在尝试更改另一个PFUser字段的值,从另一个未验证的PFUser解析,但是我似乎不能这样做。我正在尝试从一个用户增加另一个用户的“小时数”。下面是我尝试这样做的方法:
PFUser *currentUser = [PFUser currentUser];
PFACL *ACL = [PFACL ACLWithUser:[PFUser currentUser]];
[ACL setPublicReadAccess:YES];
PFUser *selectedUser = [self.formValues objectForKey:@"user"];
NSLog(@"User ID: %@", selectedUser.objectId);
PFObject *volunteerSheet = [PFObject objectWithClassName:@"VolunteerSheet"];
volunteerSheet[@"userID"] = selectedUser.objectId;
volunteerSheet[@"fromID"] = currentUser.objectId;
volunteerSheet[@"volunteerTitle"] = [self.formValues objectForKey:@"title"];
volunteerSheet[@"location"] = [self.formValues objectForKey:@"location"];
volunteerSheet[@"volunteerHours"] = [self.formValues objectForKey:@"hours"];
volunteerSheet[@"volunteerDescription"] = [self.formValues objectForKey:@"description"];
volunteerSheet.ACL = ACL;
[volunteerSheet saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
// The object has been saved.
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
// Retrieve the object by id
[query getObjectInBackgroundWithId:selectedUser.objectId
block:^(PFObject *user, NSError *error) {
[user incrementKey:@"volunteerHours" byAmount:(NSNumber*)[self.formValues objectForKey:@"hours"]];
[user saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
if (succeeded) {
NSLog(@"Succeeded");
}else{
NSLog(error.description);
}
}];
}];
NSLog(@"Saved");
[self dismissViewControllerAnimated:YES completion:^{
UIAlertView * alert =[[UIAlertView alloc ] initWithTitle:@"Success!"
message:@"Hours Sent succesfully."
delegate:self
cancelButtonTitle:nil
otherButtonTitles: nil];
[alert addButtonWithTitle:@"Okay"];
[alert show];
}];
} else {
// There was a problem, check error.description
NSLog(@"Error: %@",error.description);
}
}];发布于 2015-12-05 02:03:28
用户会自动设置安全措施,禁止修改其他用户(clps或alcs)。也许可以考虑转而使用云代码,并使用主密钥调用?
发布于 2015-12-05 02:30:31
用户将ACL设置为仅允许自己更改其值。要解决此问题,您必须在每次创建用户时更改ACL,以允许任何用户拥有对其的写权限(非常危险且根本不安全),或者需要调用云函数Parse.Cloud.useMasterKey(),该函数将覆盖所有权限,并使您能够进行更改。显然,在进行这些更改之前,您仍然应该做一些安全检查,以确保这些更改是允许的/适当的更改。
https://stackoverflow.com/questions/34094045
复制相似问题