代码之家  ›  专栏  ›  技术社区  ›  Steve

DefaultNetworkCredentials的值为空。需要提示用户…如何?

  •  0
  • Steve  · 技术社区  · 15 年前

    在某些情况下,使用SharePoint Web服务的桌面应用程序以具有空值的DefaultNetworkCredentials结束,因此调用失败。然后我需要获得用户证书,但我还没有找到一个直接的方法。

    我正在考虑实施中概述的解决方案 http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html

    …但是,这仍然需要我处理密码,我真的不想这样做。我已经看过了,但还没有找到一个更直接的方法来提示用户并直接返回NetworkCredential,而不必存储密码?

    谢谢,

    编辑:看起来我找不到确切的目标…发生这种情况时,我必须亲自提示用户。

    但是,如果我正确地解释了这些答案中的一些,那么对于DefaultNetworkCredentials来说,首先可能是一个错误条件,即为空。是这样吗?是否有一种方法强制填充DefaultNetworkCredentials,或者它真的是一个简单的缓存,只记住目标URI(那天)使用的最后一个域/用户ID/密码?该应用程序/会话?).

    3 回复  |  直到 15 年前
        1
  •  0
  •   JP Alioto    15 年前

    我认为你不能避免第一次处理它们。但是,您可以钩住凭证管理器,以便从该点向前缓存它们。 Here's an article on how to do that . 它在P/Invoke中很重要,但可以为您的用户提供更一致的体验。

        2
  •  0
  •   Nat    15 年前

    处理基础问题,即空凭据,而不是向用户询问他们已经输入的信息。

    除非您希望他们能够以不同于当前帐户的方式登录到SharePoint(这可能是一个有用的功能)。

    .NET有处理凭据的代码,那么为什么第二个猜测是通过转到外部dll并向应用程序添加另一个依赖项?

    我对您的环境中存在的代码安全风险知之甚少,但我认为在大多数情况下,将凭证对象存储在客户机内存中“足够安全”。

        3
  •  0
  •   Kirk Liemohn    15 年前

    我不知道有什么东西可以帮你处理密码,但是 SecureString 可能是有用的。

    推荐文章