2016-10-05 3 views
0

Итак, у меня есть общий проект Team Services, который я вытащил локально. Я подключаюсь к удаленной БД, которая требует учетных данных, чтобы что-то с ней делать. Все работает отлично, и мой connectionString выглядит следующим образом:Удаленное соединение с C# .NET

<add name="PluginSchedulerContext" 
    connectionString="metadata=res://*/PluginSchedulerDataModel.csdl|res://*/PluginSchedulerDataModel.ssdl|res://*/PluginSchedulerDataModel.msl;provider=System.Data.SqlClient; 

    provider connection string=&quot; 
    data source=xxx.xxx.xxx.xxx; 
    initial catalog=TestDB; 
    persist security info=True; 
    user id=xxx; 
    password=xxx; 
    MultipleActiveResultSets=True; 
    App=EntityFramework&quot;" 

    providerName="System.Data.EntityClient" /> 

мне было интересно, если есть более разумный способ сделать это и опустить поле пароля в строке, так app.config, как я вижу, не является частью .gitignore , (Я переношу с Laravel PHP)

ответ

1

Лучший способ заключается в том, вы можете изменить ConnectionString для подключения к другой базе данных (тестовой базе данных), то вы можете заменить ConnectionString через Replace Token task для подключения к реальной базе данных при развертывании приложения на сервер через build или release.

Если вы просто хотите использовать базу данных, можете программно указать connectionstring. (Зашифровать пароль, а затем сохранить зашифрованный пароль для вашего приложения, а затем расшифровать пароль и объединить ConnectionString с действительным паролем и указать его в контекст объекта. Расшифровывать локальным может быть в дополнительной сборке.)

var encryptedPassword="xxx"; 
var actualPassword=[decrypt password]; 
var connstring = [combine connectionstring with actual password]; 
var estringnew = new EntityConnectionStringBuilder(connstring); 
estringnew.Metadata = XXX 
var context = new BAEntities(estringnew.ToString()); 
var query = 
    from con in context.Contacts 
    where con.Addresses.Any((a) => a.City == "Seattle") 
    select con; 

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

Если вы не хотите, чтобы позволить разработчикам знать фактический пароль, вы можете encrypt connectionstring

0

Если вы используете аутентификацию Windows (доступ к клиенту и базе данных с использованием того же входа в Windows), вам не нужно имя пользователя и пароль в исходном коде.

Или вам нужно будет отредактировать конфигурацию при развертывании.

В противном случае учетные данные находятся в конфигурации вашего проекта в вашем VCS.

+0

SQL auth - это часть, которая не входит в мой контроль ... так, к сожалению, нет WinAuth. Тогда, я думаю, это невозможно – Norgul

Смежные вопросы