0

我有一个 Windows 窗体应用程序,它可以与多个 Web 服务和第三方组件通信,这些组件需要基于用户名和密码进行无数次登录。理想情况下,我想在我的“windows”表单应用程序中保留用户名和密码的缓存,并且我应该能够在需要时提取它。例如,当我调用sharpsvn 客户端时,它需要NetworkCredential。问题是,一旦我从用户那里收集了服务的用户名和密码,我应该将它们保存在 Windows 窗体应用程序的什么位置以及如何检索它们?我不想在我的方法边界周围传递用户名和密码或它的(任何对象)。这些方法应该知道如何从当前上下文中提取凭证。我想知道一种方法,我可以在需要时检索保存的 NetworkCredential 集合。我有哪些选择?是线程本地存储是存储此类信息的地方。我可以使用 CurrentPrinciple 来完成这项任务吗?我有深度嵌套的方法调用,并且拥有此类凭据的全局哈希表是不合适的。我想从当前上下文中提取 NetworkCrendential 的集合。请注意,这是一个 Windows 窗体应用程序,而不是 ASP.net 应用程序。

4

1 回答 1

0

我假设您的要求是只要应用程序正在运行,就只记住这些凭据:

您是否为所有的sharpsvn 调用使用了一个通用类?然后你可以给类一个静态的 NetworkCredential 属性——然后对你正在使用的每个服务做同样的事情。如果它为空,您知道您需要询问用户,设置属性,然后从那时起使用它。显然,如果您拨打电话并且身份验证失败,您将不得不添加逻辑来再次询问用户。

于 2012-06-26T09:50:45.763 回答