2016-12-05 2 views
0

Я использую PasswordVault для хранения логина/пароля пользователя в приложении Windows 10 UWP. Когда я хватаю логин/пароль от сервера хранить то в хранилище, используя этот код:Пароль пуст после получения учетных данных из PasswordVault

PasswordVault vault = new PasswordVault(); 
vault.Add(new PasswordCredential(key, login, password)); 

Теперь, когда я хочу, чтобы получить эти учетные данные из хранилища Я использую следующий код:

PasswordVault vault = new PasswordVault(); 
vault.FindAllByResource(key).ToList(); 

Но к сожалению Password собственности внутри моего PasswordCredential экземпляр, полученный от PasswordVault, пуст все время. Я использую правую клавишу, свойство Username хранится правильно, но пароль кажется потерянным.

Также попытался использовать метод vault.RetrieveAll(); и сделать мой PasswordVault как статическое поле внутри моего класса - те же результаты.

Его действительно очень странный. Пассворд не пуст, когда он сохраняется, но его всегда пустой.

Имеет ли anybode также эту проблему? Может ли кто-нибудь предложить что-нибудь, пожалуйста?

Заранее спасибо

+0

в вашем коде ВОССТАНОВЛЕНИЕ вы создаете новый объект класса PasswordVault так и должно быть пустым. сделайте объект PasswordVault глобальным, а затем попытайтесь установить и получить значения. – Mainak

+0

@Mainak, как я писал в своем вопросе, я пытался использовать его как статическое поле внутри моего класса-оболочки - это не имеет большого значения. Более того, я получил правильный объект Vault. Я могу получить учетные данные. Проблема в том, что внутри учетных данных присутствует учетная запись объекта (что фактически было сохранено), но пароль пуст. P.S. Я использую документы MSDN для него: https://msdn.microsoft.com/en-us/windows/uwp/security/credential-locker – Andrew

+0

Глупо, но проверили ли вы, что 'password' не пуст при сохранении? – schumi1331

ответ

1

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

Для получения дополнительной информации см. Примечание PasswordVault.FindAllByResource.

Мы должны использовать способ PasswordCredential.RetrievePassword для заполнения пароля для учетных данных. После успешного завершения операции мы можем получить пароль из свойства Password. Например:

PasswordVault vault = new PasswordVault(); 
vault.Add(new PasswordCredential(key, login, password)); 
var collection = vault.FindAllByResource(key).ToList(); 
foreach (var item in collection) 
{ 
    item.RetrievePassword(); 
    var password = item.Password; 
    Debug.WriteLine(password); 
} 

Кроме того, мы должны быть в состоянии использовать PasswordVault.Retrieve вернуть верительных, который содержит все данные.

Например:

PasswordVault vault = new PasswordVault(); 
vault.Add(new PasswordCredential(key, login, password)); 
var pass = vault.Retrieve(key, login); 
Debug.WriteLine(pass.Password); 
+0

Большое вам спасибо за помощь, она действительно работает сейчас! Вы сделали мой день :) – Andrew