2015-03-03 3 views
3

Возможно ли получить пароль пользователей в облачном коде с помощью myUser.get("password")? Я даже использую главный ключ, и я все еще не могу его восстановить.Извлечение пароля пользователя в облачном коде


Update:

PFCloud.callFunctionInBackground("updateUser", withParameters: ["username" : username, "newPassword" : newPasswordText.text, "currentPassword" : currentPasswordText.text, "operation" : 2]) { 
      (positions: AnyObject!, error: NSError!) -> Void in 
      if error == nil { 

        self.navigationController?.popToRootViewControllerAnimated(true) 
      } 

      else { 

       let errorAlert = UIAlertController (title: "Error", message: "Invalid current password", preferredStyle: UIAlertControllerStyle.Alert) 

       let actionCancel = UIAlertAction (title: "Dismiss", style: .Cancel, handler: nil) 

       errorAlert.addAction(actionCancel) 

       self.presentViewController(errorAlert, animated: true, completion: nil) 

      } 
     } 

Parse.Cloud.define("updateUser", function(request, response) { 
// Set up to modify user data 
Parse.Cloud.useMasterKey(); 
var query = new Parse.Query(Parse.User); 
query.equalTo("username", request.params.username); 
query.first({ 

     success: function(myUser) { 

     var password = myUser.get("password"); 

     if (request.params.operation == 1) { 

      myUser.set("password", request.params.newPassword); 

     } 

     else if (request.params.operation == 2 && password == request.params.currentPassword) { 

      myUser.set("password", request.params.newPassword); 

     } 

     else { 

      response.error(password); 
     } 

      myUser.save(null, { 

       success: function(myUser) { 
        // The user was saved successfully. 
        response.success("Successfully updated user."); 
       }, 

       error: function(myUser, error) { 
        // The save failed. 
        // error is a Parse.Error with an error code and description. 
        response.error("Could not save changes to user."); 
       } 
      }); 

    }, 

    error: function(error) { 
      alert("Error: " + error.code + " " + error.message); 
    } 
}); 
}); 
+0

@DanFromGermany Это то, что я делаю в облачном коде ... Я никогда не отправляю пароль на какие-либо устройства. У меня есть функция «сменить пароль» в моем приложении, и я прошу пользователя ввести их текущий пароль перед сохранением. Я отправляю это в облако и хочу проверить, что пароль действителен, поэтому пароль можно изменить. – nick9999

+0

Эй ник, пожалуйста, обновите свой вопрос информацией из комментария. Вопрос становится более ясным :-) – DanFromGermany

+0

Будет делать ... просто дайте мне несколько минут :) – nick9999

ответ

1

пароль хранится в виде односторонней хеш-значениями в синтаксический анализ и не является извлекаемый независимо от того, какие разрешения установлены. Его можно сравнить только с хэшированным значением другого потенциального пароля, но вы все равно не сможете вернуться к исходному паролю.

Если пользователь разместил свой адрес электронной почты, вы можете запросить процедуру сброса пароля.

+0

Я знаю, что это возможность ... Я пытался избежать этого только потому, что в контексте моего приложения это не лучший способ пойти, но я думаю, у меня нет выбора! – nick9999

Смежные вопросы