Ios 允许用户更新密码-解析-Swift
我正在尝试下面的代码,以允许用户在单击uibutton时更新密码。然而,每当我输入正确的当前密码时,就会收到“错误的当前密码”消息。我猜系统不会将输入的值与当前密码进行比较。如果没有第一个if条件,我可以更新密码。但出于安全原因,我希望用户首先输入当前密码。有人能帮忙吗Ios 允许用户更新密码-解析-Swift,ios,swift,parse-platform,passwords,Ios,Swift,Parse Platform,Passwords,我正在尝试下面的代码,以允许用户在单击uibutton时更新密码。然而,每当我输入正确的当前密码时,就会收到“错误的当前密码”消息。我猜系统不会将输入的值与当前密码进行比较。如果没有第一个if条件,我可以更新密码。但出于安全原因,我希望用户首先输入当前密码。有人能帮忙吗 @IBAction func updatePasswordBtn(sender: AnyObject) { var passwordCheckQuery = PFQuery(className: "_User")
@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 comment之后,我更新了我的代码,如下所示,代码开始工作
@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()!。密码
不会为您提供可以检查的信息。要验证密码,您需要让用户登录,即使用他们给您的用户名和密码,然后使用PFUser.logInWithUsernameInBackground…
。如果您获得了一个有效的用户,那么您可以设置密码
和保存
关于密码的注意事项:不要将密码保存为纯文本,对它们进行哈希和盐析!永远!使用你的应用程序并设置密码的每个人都过着危险的生活。我完全支持@luk2302:不要将密码保存为纯文本!这是人们可能犯的最严重的错误之一,如果我是你的应用程序的用户,我就不会使用它了。您好,事实上,当我使用parse user表存储密码时,它们不是自动散列的吗?据说它们不像在链接中那样以纯文本形式存储,所以如果我再次登录一个已经登录的用户,会不会有问题?理论上不会。如果是同一个已经登录的用户,应该没问题。如果是另一个用户,那么他们将成为当前用户。。。