powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / app.config и SQL аутентификация
20 сообщений из 20, страница 1 из 1
app.config и SQL аутентификация
    #39252709
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Переписываю проект с VBA 6 в VS 2012. Создала источник данных и привязала его к проекту и все бы хорошо, но SQL сервер использует SQL аутентификацию и мне нужно динамически менять UserID и password в строке подключения. В VBA все было просто - переприсвоить ConnectionString для объекта connection. Тут я так понимаю где-то неявно создается SQLConnection и подхватывает строку из app.config. Как сделать чтобы это происходило с учетом логина/пароля указанных пользователем на форме авторизации?
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252758
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
tanyxaВ VBA все было просто - переприсвоить ConnectionString для объекта connection
Тут точно так же
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252775
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что я не создаю явно connection. Подключение к базе выполняется где-то в недрах с использованием app.config. Источник данных был настроен мастером студии и я не вижу в программе такого места где выполняется подключение

Как компромиссный вариант я могу использовать вот такое:
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim ConStrSection As ConnectionStringsSection = config.GetSection("connectionStrings")

ConStrSection.ConnectionStrings(1).ConnectionString = "My custom connection string"
config.Save()
ConfigurationManager.RefreshSection("connectionStrings") 


Но меня смущает что на время выполнения приложения имя и пароль открытым текстом пишутся config.app, правда мои пользователи это 2 офисных работника которые тыкают на кнопки в строго установленном порядке, но все же..
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252776
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конфиг можно шифровать
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252800
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, спасибо большое, щас почитаю
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252865
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
tanyxaНо меня смущает что на время выполнения приложения имя и пароль открытым текстом пишутся config.app
А зачем вы их туда пишете?
Можно же просто сделать

Код: c#
1.
sQLConnection.ConnectionString = "My custom connection string"
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252889
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2А зачем вы их туда пишете?
Можно же просто сделать

Код: c#
1.
sQLConnection.ConnectionString = "My custom connection string"



Не можно. У меня SQLConnection явно не создается. Источник данных добавлен мастером настройки. Есть только xsd схема напханая хранимками с которыми я работаю.
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252906
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В NET ConnectionStrig в app.config, является ресурсом уровня Application, соответственно Вы не можете его менять в процессе работы приложения, но Вы можете сделать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
//NNN - обычно Ваше приложение
//NNN.Properties.Settings.Default.NNN_ConnectionString
System.Data.SqlClient.SqlConnectionStringBuilder sbb = new System.Data.SqlClient.SqlConnectionStringBuilder(Properties.Settings.Default.ConnectionString);
//Положим Вы где-то это запросили в соответствующие переменные
sbb.UserID = userName;
sbb.Password = password;
//Вместо Properties.Settings.Default.ConnectionString = sbb.ToString();
Properties.Settings.Default["ConnectionString"] = sbb.ToString();


Конечно так можно поменять не только ресурс типа ConnectionString, но и любой другой уровня Application.
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252909
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneконфиг можно шифровать
Для серверных приложений.
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252967
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransaВ NET ConnectionStrig в app.config, является ресурсом уровня Application, соответственно Вы не можете его менять в процессе работы приложения, но Вы можете сделать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
//NNN - обычно Ваше приложение
//NNN.Properties.Settings.Default.NNN_ConnectionString
System.Data.SqlClient.SqlConnectionStringBuilder sbb = new System.Data.SqlClient.SqlConnectionStringBuilder(Properties.Settings.Default.ConnectionString);
//Положим Вы где-то это запросили в соответствующие переменные
sbb.UserID = userName;
sbb.Password = password;
//Вместо Properties.Settings.Default.ConnectionString = sbb.ToString();
Properties.Settings.Default["ConnectionString"] = sbb.ToString();


Конечно так можно поменять не только ресурс типа ConnectionString, но и любой другой уровня Application.

Гм.. я не могу обратиться к My.Settings.PropertyValues("ConnectionString").Property.DefaultValuе. Получаю NullReferenceException
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39252968
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем что-то получилось но подозреваю что коряво.

При вводе данных логин/пароль шифрую:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim provider As String = "DataProtectionConfigurationProvider"
Dim ConStrSection As ConnectionStringsSection = config.GetSection("connectionStrings")
ConStrSection.ConnectionStrings(1).ConnectionString = "My custom connection string"
ConStrSection.SectionInformation.ProtectSection(provider)
ConStrSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
ConfigurationManager.RefreshSection("connectionStrings")



Заглядываю в App.config - отлично:
Код: xml
1.
2.
3.
4.
5.
6.
7.
    <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
        <EncryptedData>
            <CipherData>
                <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+ ....ну и так далее </CipherValue>
            </CipherData>
        </EncryptedData>
    </connectionStrings>



Но в My.Settings искомое Property MyDBConnectionString() получается таким образом:
Код: vbnet
1.
2.
3.
4.
5.
 Public ReadOnly Property KremenFarmConnectionString() As String
   Get
      Return CType(Me("KremenFarmConnectionString"), String)
   End Get
 End Property



Получается перед этим нужно секцию расшифровать, но если это делать - то логин и пароль опять сохранятся открытым текстом... В общем переделала вот так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public ReadOnly Property KremenFarmConnectionString() As String
  Get
    Dim config As Configuration.Configuration = Configuration.ConfigurationManager.OpenExeConfiguration(Configuration.ConfigurationUserLevel.None)
    Dim provider As String = "DataProtectionConfigurationProvider"
    Dim ConStrSection As Configuration.ConnectionStringsSection = DirectCast(config.GetSection("connectionStrings"), Configuration.ConnectionStringsSection)
    Return ConStrSection.ConnectionStrings("My Custom String").ConnectionString               
  End Get
End Property
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253005
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanyxafortibransaВ NET ConnectionStrig в app.config, является ресурсом уровня Application, соответственно Вы не можете его менять в процессе работы приложения, но Вы можете сделать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
//NNN - обычно Ваше приложение
//NNN.Properties.Settings.Default.NNN_ConnectionString
System.Data.SqlClient.SqlConnectionStringBuilder sbb = new System.Data.SqlClient.SqlConnectionStringBuilder(Properties.Settings.Default.ConnectionString);
//Положим Вы где-то это запросили в соответствующие переменные
sbb.UserID = userName;
sbb.Password = password;
//Вместо Properties.Settings.Default.ConnectionString = sbb.ToString();
Properties.Settings.Default["ConnectionString"] = sbb.ToString();


Конечно так можно поменять не только ресурс типа ConnectionString, но и любой другой уровня Application.

Гм.. я не могу обратиться к My.Settings.PropertyValues("ConnectionString").Property.DefaultValuе. Получаю NullReferenceException
Код: c#
1.
2.
3.
4.
5.
6.
        Dim sbb As SqlClient.SqlConnectionStringBuilder
        sbb = New SqlClient.SqlConnectionStringBuilder(My.Settings.testConnectionString)
        sbb.IntegratedSecurity = False
        sbb.UserID = "sa"
        sbb.Password = "sql"
        My.Settings("testConnectionString") = sbb.ToString()


Только ConnectionString должна быть создана в проекте в студии
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253022
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa
Код: c#
1.
2.
3.
4.
5.
6.
        Dim sbb As SqlClient.SqlConnectionStringBuilder
        sbb = New SqlClient.SqlConnectionStringBuilder(My.Settings.testConnectionString)
        sbb.IntegratedSecurity = False
        sbb.UserID = "sa"
        sbb.Password = "sql"
        My.Settings("testConnectionString") = sbb.ToString()


Только ConnectionString должна быть создана в проекте в студии
Спасибо огромное. Все получилось - просто и красиво
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253035
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanyxa, завязывай с VB.NET, уж лучше C#
Сперва некий шок, а потом как по маслу.
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253094
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransatanyxa, завязывай с VB.NET, уж лучше C#
Сперва некий шок, а потом как по маслу.
разница кстати не очень большая, больше синтаксическая.
по этому:
а) легко перейти в VB.NET на C#
б) если не отличается, то надо ли это вообще? :)
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253146
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Что мне нравится в синтаксисе VB.net. Операторные скобки If-End If и подобные
Что мне не нравится в VB.net. Не поймешь, где вызов функции, а где обращение к массиву
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253150
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransatanyxa, завязывай с VB.NET, уж лучше C#
Сперва некий шок, а потом как по маслу.
Если честно изначально такая мысль была, но не пошло. Не знаю почему, но когда я вижу фигурные операторные скобки - у меня начинается нервный мандраж и код отказывается восприниматься. Или это и есть тот шок? ))))
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253204
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
tanyxaИли это и есть тот шок? ))))
Да
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253251
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanyxafortibransa
Код: c#
1.
2.
3.
4.
5.
6.
        Dim sbb As SqlClient.SqlConnectionStringBuilder
        sbb = New SqlClient.SqlConnectionStringBuilder(My.Settings.testConnectionString)
        sbb.IntegratedSecurity = False
        sbb.UserID = "sa"
        sbb.Password = "sql"
        My.Settings("testConnectionString") = sbb.ToString()


Только ConnectionString должна быть создана в проекте в студии
Спасибо огромное. Все получилось - просто и красивоНе совсем красиво, если Вы или кто-то изменит имя ресурса в данном примере testConnectionString, то придется последнюю строчку редактировать. Но и это решаемо.
...
Рейтинг: 0 / 0
app.config и SQL аутентификация
    #39253254
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, об этом можно не беспокоится. Проект я веду единолично, а пользователи боятся лазить куда-то помимо самой программы
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / app.config и SQL аутентификация
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]