Создание экрана входа в систему, WPF, как хранить имена пользователей и пароли - PullRequest
2 голосов
/ 22 января 2012

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

Сначала я подумал об упрощении, просто добавив имя пользователя по умолчанию «Admin» и пароль «AdminPass». Я бы просто проверил, совпадает ли userinput с тем, что должно быть в коде, и если это будет dame, то он продолжится.

Но есть и обратная сторона: имя пользователя и пароль внутри жестко закодированы, поэтому их нельзя изменить в приложении. (если я не сделаю это в настройках, но это просто XML, который можно прочитать вне приложения, и, следовательно, не является правильным решением).

Так что мне интересно, как лучше всего подойти к этой проблеме? Чтобы после первого входа в систему по умолчанию администратор мог изменить пароль администратора, и он сохраняется в приложении (и, следовательно, сохраняется после перезапуска приложения).

Ответы [ 2 ]

4 голосов
/ 22 января 2012

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

Аналогично, если пользователь решит сменить пароль, замените старый хэш новым

Вы можете использовать этот код для хеширования пароля

public static string EncodePassword(string password)
{  byte[] bytes   = Encoding.Unicode.GetBytes(password);
   byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes);
   return Convert.ToBase64String(inArray);
}

Вы также можете сохранить эту информацию в файле конфигурации приложения

0 голосов
/ 22 января 2012

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

Если по какой-то причине вы не хотите использовать систему баз данных, а мы не говорим о приложении с высоким уровнем безопасности, то зашифрованный пароль может быть сохранен в вашем XML-файле в необратимом шифровании, таком как MD5.

System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.ASCII.GetBytes(yourPassword);
data = x.ComputeHash(data);
String md5Hash = System.Text.Encoding.ASCII.GetString(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...