#c# #mysql #asp.net
#c# #mysql #asp.net
Вопрос:
Я пытаюсь найти наилучший способ приблизиться к следующему:
У меня есть веб-сайт приложения, который я хочу использовать для всех предприятий (ASP.NET/C #). Однако, в зависимости от названия компании при входе в систему, я хочу переключать базы данных. Другими словами, каждая компания имеет свою собственную базу данных MySQL, точно такую же структуру и процедуры, поэтому она не будет конфликтовать с интерфейсным кодом. Каков наилучший способ добиться этого? Я подумал о добавлении другой строки подключения в web.config и в зависимости от бизнес-идентификатора используйте один или другой. Однако я не хочу, чтобы в итоге в web.config были десятки строк подключения. Должен быть другой способ, более эффективный. Я также беспокоюсь о безопасности, поэтому, если я business ABC, я хочу убедиться, что я всегда буду видеть только базу данных ABC. Любая обратная связь будет очень признательна.
Ниже приведен мой пример глобального входа в систему с использованием базы данных входа:
protected void GlobalLogin(string email, string password)
{
int salt = email.Trim().Length;
string hashedPassword;
Passwords obj = new Passwords(password, salt);
hashedPassword = obj.ComputeSaltedHash();
using (MySqlConnection connection = new MySqlConnection(constr))
{
using (MySqlCommand cmd = new MySqlCommand("sp...", connection))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@email", MySqlDbType.VarChar, 100).Value = email;
cmd.Parameters.Add("@password", MySqlDbType.VarChar, 200).Value = hashedPassword;
connection.Open();
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
{
... set session and go to the homepage
}
}
}
}
Ответ №1:
Ну что ж… Вам определенно нужно хранилище для строк подключения. Конфигурационный файл является одним из вариантов. Вы также можете создать единую базу данных с единой таблицей, которая содержит строки подключения для каждого бизнеса. В вашем файле web.config должна быть строка подключения к этой централизованной базе данных (данные которой вы должны зашифровать с помощью шифрования SQL server). Когда пользователь идентифицирует целевой бизнес (каким-то образом .. возможно, со страницы входа в систему), вам необходимо подключиться к централизованной базе данных, получить строку подключения для бизнеса пользователя и динамически настроить строку подключения.
По соображениям производительности вы можете кэшировать строки подключения в памяти, поэтому вам не нужно постоянно обращаться к централизованной базе данных.
Комментарии:
1. Большое спасибо Feryal за вашу помощь. Я создаю централизованную базу данных, которая будет содержать строку подключения, но я использую MySQL, а не SQL Server. На странице входа в систему мне нужно переключать базы данных, как только пользователь аутентифицируется, и мы знаем, откуда поступает бизнес. Я вскоре обновлю свой вопрос с помощью централизованной базы данных.
2. Я никогда не использовал MySQL, но я нашел несколько ссылок о том, как зашифровать столбец в MySQL, поэтому вы все равно можете зашифровать свои строки подключения. Важно, чтобы вы не сохраняли их в виде обычного текста, потому что, если кто-либо получит доступ к этой таблице, у него / нее будет ключ от королевства.
3. Если вы думаете о наличии 3 полей на странице входа (бизнес-идентификатор, имя пользователя и пароль), я должен сказать вам, что в одной из моих предыдущих жизней (работ) мы делали то же самое, и нашим клиентам это не нравилось. Чем больше полей для ввода, тем больше шансов ввести неправильные данные и не попасть внутрь. Это может стать еще более сложным, если вы подумаете о функции сброса пароля (забыли пароль) … пользователь также может забыть бизнес-идентификатор.
4. Поймите, дело в том, что у меня несколько предприятий и несколько баз данных, мне все равно нужен один логин / пароль для каждого бизнеса, который затем получит нужный файл базы данных. Я читаю о шифровании БД в MySQL, но пока кажется, что может быть более безопасным иметь зашифрованный файл db.config, в котором будет размещено несколько строк подключения, и добавить его в файл web.config. После успешной аутентификации бизнеса программа должна вызвать правильную строку подключения