0

現在、ASP.NET MVC3、SQL Server 2008、および最初にデータベースを使用した EF に基づくアプリケーションを開発しています。

私のアプリケーションでは、すべてのユーザーが独自の SQL Server データベースを持つ必要があります。これらのデータベースはすべて同一の構造を持っています。

私の顧客はcustomercode、例えばで識別されfgtます。このコードは URL で提供されます。customercodeURL からを取得し、それに応じて接続文字列を設定する方法を知る必要があります。

助けてくれてありがとう


私の考えは、顧客コードがURLから取得されたらデータベースに接続し、データにアクセスするためにユーザー名とパスワードを入力するようにユーザーに求めることです。ただし、各顧客の接続文字列を格納するデータベースを作成することをお勧めします。誰でもこれを行うために必要なコードを書くことができますか?. 私はaspが初めてです。私はphpから来ました。

(英語を勉強中です。文法が下手でごめんなさい)

4

4 に答える 4

1

顧客とその接続文字列をホワイトリストに登録することを提案します。

  • あなたの側でWebサービスをセットアップします。
  • デプロイされたアプリケーションは、カスタマー コードを使用して Web サービスを呼び出します。
  • Web サービスは顧客コードを検証し、有効な conn 文字列を返します。
  • 顧客のアプリは、conn 文字列をメモリに保持します (セッション、キャッシュ、whathaveyou)。

これにより、conn 文字列が特定の顧客コードに対して常に有効であることを確認できます。何らかの理由(不払いなど)でデータベースへのアクセスを細かく制御できます。組み込みのキャッシングのおかげで、サービスにはいくつかのヒットがあります。

于 2011-09-14T21:09:16.203 に答える
1

開始するには、次のようなことを試してください。

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" />
于 2011-09-14T20:52:05.380 に答える
0

sqlshard は、複数のデータベースを使用するのに役立つでしょうか?

http://enzosqlshard.codeplex.com/

于 2011-09-14T21:01:33.647 に答える
0

かなり安全でないソリューションのように聞こえます。顧客が URL に別の顧客コードを入力した場合はどうなりますか? 顧客のアクセス許可を持つ中央データベースがない場合、顧客がそのコードにアクセスできるかどうかはどこで検証されますか?

認証と、アプリケーションにアクセスするユーザーが提供された URL へのアクセス許可を持っていることを検証する中央ストア (追加のデータベース) が必要です。また、そのようなデータベースが存在するかどうかも検証します。次にSqlConnectionStringBuilder、顧客コードをデータベースの名前 (または名前の一部) として使用します。セキュリティ上の理由から、各データベースには、そのデータベースからの読み取り専用のアクセス許可を持つ個別の SQL アカウントが必要です。この db アカウントは、暗号化されたパスワードを使用して中央ストレージに保存することもできます。

顧客コードを動的に追加または削除することも期待される場合は、さらに複雑になる可能性があります = データベース。ログイン、アカウント、データベースなどを管理するには、高い特権を持つアカウントが必要です。

Uri の一部を取得する方法を尋ねているため、ASP.NET MVC およびおそらく関連するすべての経験がほとんどないようです。この時点で深刻な問題が発生し、非常に安全でないアプリケーションを開発する可能性があり、会社や顧客の評判を著しく損なう可能性があるため、スキルのある同僚や上司にアーキテクチャのレビューを依頼する必要があります。

于 2011-09-15T07:03:09.493 に答える