Реализация диалога входа в .NET - PullRequest
0 голосов
/ 10 апреля 2010

Я реализовал класс LoginAccess, который предлагает пользователю ввести имя пользователя и пароль в активном каталоге. Затем я сохраняю данные для входа в виде зашифрованного файла. При каждом последующем запуске приложения класс LoginAccess будет считывать зашифрованный файл и проверять активный каталог, чтобы убедиться, что данные для входа все еще действительны. Если это не так, то он снова предложит пользователю. Я сделал так, чтобы чтение зашифрованного файла и отображение диалогового окна входа в систему происходило в отдельном потоке. Делегат увольняется, когда процесс входа в систему завершен.

Проблема в том, что у меня есть класс, который используется в нескольких местах. Этот класс содержит вызов объекта LoginAccess. Каждый раз, когда я создаю экземпляр нового объекта, происходит многократный вызов объекта LoginAccess, и я получаю несколько диалоговых окон, когда он пытается запросить имя пользователя и пароль.

Будем весьма благодарны за любые предложения о том, как отобразить только один диалог.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2010

Возможно, имеет смысл прочитать файл паролей и выполнить вход в AD в главном потоке выполнения, поскольку, предположительно, пользователь не может делать ничего другого, пока он не будет аутентифицирован. Это также должно устранить вашу проблему с несколькими диалоговыми окнами.

1 голос
/ 10 апреля 2010

Запрос пароля пользователя в незащищенных приложениях - очень плохая практика.

  • Если вы должны запросить повышенные привилегии, используйте CredUIPromptForCredentials и не сохраняйте их.
  • Если вы должны работать с повышенными привилегиями, используйте манифест файла для запроса повышенного контекста.
  • Если вы должны работать с совершенно другими учетными данными, тогда вы не должны быть приложением для запуска, вместо этого вы должны быть службой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...