.NET登录对话实现

时间:2010-04-10 19:04:46

标签: c# login

我已经实现了一个LoginAccess类,它提示用户输入他们的活动目录用户名和密码。然后我将登录数据保存为加密文件。每次后续启动应用程序时,LoginAccess类都将读取加密文件并检查活动目录以查看登录信息是否仍然有效。如果不是,则会再次提示用户。我已经做到这一点,以便读取加密文件和显示登录对话框是在一个单独的线程上完成的。登录过程完成后会触发委托。

我遇到的问题是我有一个在多个地方使用的课程。该类包含对LoginAccess对象的调用。每次我实例化一个新对象时,都会对LoginAccess对象进行多次调用,并在尝试提示输入用户名和密码时出现多个对话框。

对于如何只显示一个对话框的任何建议都将非常感激。

2 个答案:

答案 0 :(得分:2)

读取密码文件并在执行的主线程中执行AD登录可能是有意义的,因为在用户进行身份验证之前,用户可能无法执行任何其他操作。这也应该消除多个对话框的问题。

答案 1 :(得分:1)

在不受保护的应用程序中请求用户密码是一种非常糟糕的做法。

  • 如果您必须请求提升的权限,请使用CredUIPromptForCredentials并且不保存它们。
  • 如果您必须在提升的权限下运行,请使用该文件的清单来请求提升的上下文。
  • 如果你必须在完全不同的凭据下运行,那么你不应该是一个应用程序,而应该是一个服务。