Как подключиться к разным базам данных? - PullRequest
0 голосов
/ 15 сентября 2011

В настоящее время я разрабатываю приложение на основе ASP.NET MVC3, SQL Server 2008 и EF с базой данных в первую очередь.

Мое приложение требует, чтобы у каждого пользователя была своя собственная база данных SQL Server. Все эти базы данных имеют одинаковую структуру.

Мои клиенты идентифицируются как customercode, например fgt. Этот код предоставляется в URL. Мне нужно знать, как я могу получить customercode из URL-адреса и установить строку подключения соответствующим образом.

Спасибо за помощь


Моя идея состоит в том, чтобы подключиться к базе данных после извлечения кода клиента из URL, а затем предложить пользователю ввести свое имя пользователя и пароль для доступа к данным. Но да, это хорошая идея - создать базу данных для хранения строки подключения каждого клиента. Может кто-нибудь написать код, который мне нужен для этого, пожалуйста. Я новичок в асп. Я с php.

(я только учу английский. Извините за плохую грамматику)

Ответы [ 4 ]

1 голос
/ 15 сентября 2011

Предложите белый список своим клиентам и их строки подключения.

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

Это позволит вам убедиться, что строка conn всегда действительна для данного кода клиента. У вас будет точный контроль доступа к базе данных по любой причине (неуплата и т. Д.). Ваш сервис будет иметь несколько просмотров благодаря любому встроенному кешированию.

1 голос
/ 15 сентября 2011

Попробуйте что-то вроде этого, чтобы начать:

string customerCode = Request.QueryString["cust"].ToString();

string myNewConnString = ConfigurationManager
                           .ConnectionStrings["MyDatabase"]
                           .ConnectionString
                           .Replace("[placeholder]", customerCode);

Где ваша строка подключения в вашем .config выглядит примерно так.Обратите внимание, что я предполагал, что вы поместите токен для замены ([placeholder]).

 <add name="MyDatabase" 
      connectionString="Data Source=192.168.0.1;Initial Catalog=[placeholder];User ID=foo;Password=bar"     
      providerName="System.Data.SqlClient" />
0 голосов
/ 15 сентября 2011

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

Вам нужна аутентификация и некоторое центральное хранилище (дополнительная база данных), где вы будете проверять, имеет ли пользователь, обращающийся к приложению, права доступа к предоставленному URL. Он также проверит, существует ли такая база данных. Далее вам нужно просто SqlConnectionStringBuilder и использовать код клиента в качестве имени базы данных (или части имени). По соображениям безопасности каждая база данных должна иметь отдельную учетную запись SQL с разрешениями на чтение только из этой базы данных. Эта учетная запись БД также может храниться в этом центральном хранилище с зашифрованными паролями.

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

Поскольку вы спрашиваете, как получить часть Uri, похоже, у вас почти нет опыта работы с ASP.NET MVC и, возможно, со всем, что связано. Вы должны обязательно попросить любого более опытного коллегу или начальника пересмотреть вашу архитектуру, потому что на данный момент у вас, похоже, возникнут серьезные проблемы, и вы можете разработать очень небезопасное приложение, которое может нанести существенный вред репутации вашей компании и вашего клиента.

0 голосов
/ 15 сентября 2011

Может быть, sqlshard может помочь вам в использовании нескольких баз данных?

http://enzosqlshard.codeplex.com/

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