在Windows窗体应用程序中保留自定义标识的位置?

时间:2012-06-26 09:24:57

标签: c# .net authentication authorization identity

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

1 个答案:

答案 0 :(得分:0)

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

您是否正在使用所有sharpsvn调用的公共类?然后,您可以为该类提供静态NetworkCredential属性 - 然后对您正在使用的每个服务执行相同操作。如果它为null,您知道需要询问用户,设置属性,然后再使用它。显然,如果您进行呼叫并且身份验证失败,您将不得不添加逻辑以再次询问用户。