让用户更新密码 - 解析 - 斯威夫特

时间:2015-06-21 08:34:12

标签: ios swift parse-platform passwords

我正在尝试使用以下代码让用户在点击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")
        }

    }

}

1 个答案:

答案 0 :(得分:4)

您无法使用密码,因此执行PFUser.currentUser()!.password并不会为您提供可以检查的内容。要验证密码,您需要登录用户 - 即获取他们提供给您的用户名和密码并使用PFUser.logInWithUsernameInBackground...。如果您获得有效用户,则可以设置passwordsave