2010-04-10 72 views
0

我實現了一個LoginAccess類,提示用戶輸入他們的活動目錄用戶名和密碼。然後我將登錄數據保存爲加密文件。在應用程序的每個後續啓動中,LoginAccess類將讀取加密文件並檢查活動目錄以查看登錄信息是否仍然有效。如果不是,那麼它會再次提示用戶。我已經做到了,讀取加密文件和顯示登錄對話框是在一個單獨的線程上完成的。登錄過程完成後,會觸發委託。.NET登錄對話框實現

我遇到的問題是我有一個在多個地方使用的類。這個類包含對LoginAccess對象的調用。每次我實例化一個新對象時,都會對LoginAccess對象進行多次調用,並且在嘗試提示用戶名和密碼時出現多個對話框。

任何關於如何只有一個對話框出現的建議將不勝感激。

+1

您可能需要開始標記您的問題並回答以繼續獲得回覆... – mmr 2010-04-10 19:05:42

回答

1

在未受保護的應用程序中請求用戶密碼是一種非常糟糕的做法。

  • 如果必須要求提升權限,使用CredUIPromptForCredentials,不救他們。
  • 如果您必須在提升的權限下運行,請使用該文件的清單來請求提升的上下文。
  • 如果您必須在完全不同的憑據下運行,那麼您不應該是一開始的應用程序,而應該是一個服務。
+0

我需要能夠將輸入的憑證保存到加密文件中,以便每次打開應用程序時不需要提示他們。 – arc1880 2010-04-10 23:05:51

+0

如果您需要其他使用憑證,那麼您需要成爲在這些憑證下運行的服務。如果您需要當前的用戶憑證,則您已擁有它們,並且永遠不需要詢問用戶密碼。沒有理由做你想做的事情。 – 2010-04-10 23:12:25

+0

我需要獲取用戶憑證才能進行Web服務調用。我怎麼能得到這些憑據,而不用提示用戶呢? – arc1880 2010-04-10 23:16:08

2

讀取密碼文件並在主執行線程中執行AD登錄可能是有意義的,因爲大概用戶在進行身份驗證之前不能執行任何其他操作。這也應該消除多個對話框的問題。

+0

我希望能夠彈出登錄屏幕並加載應用程序,因爲它需要一段時間才能啓動它。 – arc1880 2010-04-10 22:27:59