подключение к серверу sql через приложение .net winform - PullRequest
3 голосов
/ 01 марта 2011

Я делаю простое приложение Winform c # .net с form1, которое будет подключаться к серверу sql.

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

для этого, что я должен делать:

взять логин и пароль в двух текстовых полях и передать их в строку подключения или же я должен передать их в файл app.config и затем использовать строку из файла app.config в форме form1.cs?

это будет нормально с проблемами безопасности? если нет, то каковы другие способы реализации этой задачи?

Ответы [ 5 ]

5 голосов
/ 01 марта 2011

Я хотел бы сделать это:

  • использовать SqlConnectionStringBuilder компонент
  • определять такие вещи, как имя сервера, имя базы данных и т. Д. Из вашего app.config
  • этот компонент также имеет два свойства для имени пользователя и пароля - заполните их в диалоговом окне, где вы запрашиваете у пользователя эту информацию
  • , который SqlConnectionStringBuilder затем дает вам правильную строку подключения для использования дляподключение к вашему SQL-серверу

Обновление:

Я бы предложил сохранить базовую строку подключения следующим образом:

<configuration>
  <connectionStrings>
     <add name="MyConnStr" 
          connectionString="server=A9;database=MyDB;" />
  </connectionStrings>
</configuration>

Затем загрузите эту «скелетную» строку подключения (которая является неполной - это не сработает!) В ваш SqlConnectionStringBuilder:

string myConnStr = ConfigurationManager.ConnectionStrings["MyConnStr"].ConnectionString;

SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder(myConnStr);

Затем получите имя пользователя и пароль от пользователя в диалоговом окне.и добавьте их в построитель строки подключения:

sqlcsb.UserID = tbxUserName.Text.Trim();
sqlcsb.Password = tbxPassword.Text.Trim();

, а затем получите полученную полную строку подключения из SqlConnectionStringBuilder:

string completeConnStr = sqlcsb.ConnectionString;

using(SqlConnection _con = new SqlConnection(completeConnStr))
{
   // do whatever you need to do here....
}
1 голос
/ 01 марта 2011

Детали аутентификации Sql всегда хранятся отдельно от деталей аутентификации приложения (есть исключения ... например: вы делаете свою собственную версию клиента сервера sql)

  • Сохраните информацию о подключении к вашей базе данных в app.config.
  • В идеале он должен содержать одного пользователя с включенными ограничениями уровня приложения.
  • Логин, о котором вы говорите, является модулем аутентификации, существующим в C #. Например: проверка подлинности Windows, проверка подлинности с помощью форм и т. д.
1 голос
/ 01 марта 2011

Для закрепления струн используйте SecureString Класс.

1 голос
/ 01 марта 2011

Другим способом реализации может быть аутентификация на сервере SQL с аутентификацией Windows. Таким образом, локальный пользователь Windows может иметь определенные привилегии безопасности для базы данных, и пользователь приложения обязательно должен будет ввести любые учетные данные.

Для чего используются учетные данные? Используются ли они для установления соединения с базой данных или для доступа к записи учетной записи пользователя и привилегиям безопасности в приложении?

1 голос
/ 01 марта 2011

Передать логин в строку подключения. app.Config - это не место для хранения взаимодействия с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...