Предоставление пользователю пароля пользователя – Parse – Swift

Я пытаюсь использовать код ниже, чтобы пользователи могли обновлять свой пароль при щелчке uibutton. Однако, когда я ввожу текущий пароль, я получаю сообщение «неправильный текущий пароль». Я думаю, что система не сравнивает введенное значение с текущим правом пароля. Без первого условия if я могу обновить пароль. Но сначала я хочу, чтобы пользователь вводил текущий пароль по соображениям безопасности. Может кто-нибудь помочь?

@IBAction func updatePasswordBtn(sender: AnyObject) { var passwordCheckQuery = PFQuery(className: "_User") passwordCheckQuery.whereKey("username", equalTo: PFUser.currentUser()!.username!) var objects = passwordCheckQuery.findObjects() for object in objects! { if currentPassword.text == PFUser.currentUser()!.password { if newPassword.text == retypeNewPassword.text { var query6 = PFUser.query() query6!.whereKey("username", equalTo: PFUser.currentUser()!.username!) query6!.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in for object6 in objects! { var ob6:PFObject = object6 as! PFObject ob6["password"] = self.newPassword.text ob6.save() } } } else { println("passwords dont match") } } else { println("wrong current password") } } } 

Я обновил свой код, как показано ниже, после комментария @Wains, и он начал работать.

 @IBAction func updatePasswordBtn(sender: AnyObject) { PFUser.logInWithUsernameInBackground(PFUser.currentUser()!.username!, password: currentPassword.text) { (user:PFUser?, error:NSError?) -> Void in if error == nil { var passwordCheckQuery = PFQuery(className: "_User") passwordCheckQuery.whereKey("username", equalTo: PFUser.currentUser()!.username!) var objects = passwordCheckQuery.findObjects() for object in objects! { if self.newPassword.text == self.retypeNewPassword.text { var query6 = PFUser.query() query6!.whereKey("username", equalTo: PFUser.currentUser()!.username!) query6!.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in for object6 in objects! { var ob6:PFObject = object6 as! PFObject ob6["password"] = self.newPassword.text ob6.save() println("successfully updated password") } } } else { println("passwords dont match") } } } else { println("wrong current password") } } } 

Пароль вам недоступен, поэтому PFUser.currentUser()!.password не даст вам то, что вы можете проверить. Чтобы проверить пароль, вам необходимо зарегистрировать пользователя, т. PFUser.logInWithUsernameInBackground... имя пользователя и пароль, которые они дают вам, и использовать PFUser.logInWithUsernameInBackground... Если вы вернете действительного пользователя, тогда вы можете установить password и save .

Interesting Posts
Давайте будем гением компьютера.