Kas*_*sen 6 c# credentials windows-8 passwordvault
嘿我正在使用PasswordVault在我的Windows 8应用程序中存储用户凭据.
我希望应用程序在加载时执行的操作是检查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;
}
Run Code Online (Sandbox Code Playgroud)
然后在页面加载我有
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;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果没有与资源(MYapp)存储的凭证代码:
var credentialList = vault.FindAllByResource("MYapp");
Run Code Online (Sandbox Code Playgroud)
收益率:
WinRT信息:无法在Vault中找到凭据
附加信息:找不到元素.
FindAllByResource当没有指定资源的凭据时,方法会抛出异常,因此您需要用try catch块包装它。
或者,您可以使用“RetrieveAll”,如果没有存储凭据,它不会引发异常,并迭代每个返回的凭据PasswordCredential并检查其Resource属性。