7

Windows 8 アプリにユーザー資格情報を保存するために PasswordVault を使用しています。

ロード時にアプリに実行させたいことは、PasswordVault /資格情報マネージャーにアプリの値が既に保存されているかどうかを確認することです。そうでない場合は、ユーザーがログインできるようにページに残しておきたいのですが、資格情報が既にある場合は、2 ページに直接移動したいと思います。

次のコードを使用してみました:

private Windows.Security.Credentials.PasswordCredential GetCredentialFromLocker()
{
    Windows.Security.Credentials.PasswordCredential credential = null;

    var vault = new Windows.Security.Credentials.PasswordVault();
   
    var credentialList = vault.FindAllByResource("MYapp");
    if (credentialList.Count > 0)
        if (credentialList.Count == 1)
            credential = credentialList[0];
        else
            // User selecor
   
    return credential;
}

そして、ページの読み込み時に私は持っています

private void Page_Loaded(object sender, RoutedEventArgs e)
{
    var loginCredential = GetCredentialFromLocker();

    if (loginCredential != null)
        this.Frame.Navigate(typeof(page2)); 
    else
    {
        loginBigButton.Visibility = Windows.UI.Xaml.Visibility.Visible;
        signUpButton.Visibility = Windows.UI.Xaml.Visibility.Visible;
        signUpTextBlock.Visibility = Windows.UI.Xaml.Visibility.Visible;
    }
}

問題は、資格情報がリソース (MYapp) と共に格納されていない場合、コード:

var credentialList = vault.FindAllByResource("MYapp");

収量:

WinRT 情報: Vault で資格情報が見つかりません

追加情報: 要素が見つかりません。

4

2 に答える 2

4

指定されたリソースの資格情報がない場合、メソッドは例外をスローするため、ブロックFindAllByResourceでラップする必要があります。try catch

または、資格情報が保存されていない場合に例外をスローしない「RetrieveAll」を使用して、返されたそれぞれを反復処理し、そのプロパティPasswordCredentialを確認することもできResourceます。

于 2013-07-30T18:54:12.927 に答える