gpt4 book ai didi

c# - 检查 PasswordVault/credential manager 在加载时是否有应用程序数据

转载 作者:太空狗 更新时间:2023-10-29 21:39:54 24 4
gpt4 key购买 nike

嘿,我正在使用 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;
}

然后在页面加载时我有

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 information: Cannot find credential in Vault

Additional information: Element not found.

最佳答案

方法FindAllByResource当没有指定资源的凭证时抛出异常,所以你需要用 try catch 包装它 block 。

或者,您可以使用“RetrieveAll”,如果没有存储凭据并迭代每个返回的凭据,它不会抛出异常 PasswordCredential并检查它是 Resource属性(property)。

关于c# - 检查 PasswordVault/credential manager 在加载时是否有应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com