【发布时间】:2015-06-21 08:34:11
【问题描述】:
我正在尝试下面的代码,让用户在单击 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")
}
}
}
【问题讨论】:
-
只是关于密码的注意事项:不要以纯文本形式保存它们,对它们进行哈希和加盐!总是!每个使用您的应用并设置密码的人都过着危险的生活。
-
我完全支持@luk2302:不要将密码保存为纯文本!这是某人可能犯的最严重的错误之一,如果我是您的应用程序的用户,我不会因此而使用它..
-
你好,实际上当我使用解析用户表来存储密码时,它们不是自动散列的吗?据说它们不像链接parse.com/questions/are-user-passwords-encrypted-or-hashed那样以纯文本形式存储
标签: ios swift parse-platform passwords