3

私はMVCが初めてで、現在MVC6(EF7、Identity3、VS2015)を使用しています...

1 つの企業ドメイン (異なるサブドメイン) に 2 つの異なる/独立した WebApp を作成したいと考えています。

両方のアプリに共通/共有の ID/ログイン システムを使用したいと考えています。言い換えれば、ユーザーが両方のアプリで 1 つのアカウントを持つことを許可します。

ドメイン認証のオプションがありません (会社はドメインを使用していません - 私はそれが奇妙であることを知っています)。個々のユーザー アカウントを使用...

複数のアプリで共通のユーザー アカウントを作成して使用するための最良の方法/プラクティスは何ですか?

最初に、両方のアプリに 2 つの異なる DBContext を作成することを考えました。1 つは ID (ユーザー DB) 用、もう 1 つはアプリ関連の DB 用です...

このようなアプローチでは、次の 3 つの異なるデータベースが得られます。

  • IdentityDb - 両方の WebApp に共通、
  • App1Db
  • App2Db

しかし、それが良い習慣であり、最善の方法であるかどうかは疑問です。

おそらく、適切に構成された 1 つの DBContext で十分でしょうが、どこから始めればよいかわかりません。

SSO(シングルサインオン)について読んだことがありますが、それは認証プロセスに関するものであることを理解している限り、少し後であるため、この方向性についてはわかりません。

とにかく、複数のアプリで共通のユーザー アカウント/プロファイルを作成する方法の例が見つかりません。


アップデート:

私の元の質問はおそらくあまりにもオープンです...「何をすべきか」だけでなく、「MVC6でどのように行うか」についても尋ねたいです...

私の追加の質問は、MVC6でこれをどのように達成できますか? 私がしなければならないこと?おそらくいくつかの例ですか?

別のユーザー DB を使用することにした場合、アプリケーションの観点からすると、2 つの DB を持つことになりますか? コードでこれをどうするか? DBContext を 2 つ作成する必要がありますか? それとも 1 つだけ作成する必要がありますか?

また、SO については、DbContext を 1 つだけ使用する方が適切でシンプルなオプションであるという意見を読んだことはほとんどありません...

とにかく、昨日試してみました 2x DBContext - IdentityDbContext の新しいコントローラーを作成するとすべてが機能しますが、2番目の DBContext (Identity に関連付けられていない) のコントローラーを作成しようとするとエラーが発生します...

(このエラーの説明を新しい質問に追加しました: MVC6 Working with two DBContexts and error when create new controller )


事前にアドバイスをありがとう:)

4

2 に答える 2

1

3 つのデータベースを持つことが最善の方法であるかどうかという質問に対する答えは、次のとおりです。

これが良い習慣であるかどうかの答えは関係ありません。

詳しく説明しましょう。

すべてのアプリが専用のデータベースを持っているという概念は、昔ながらの考え方に由来しています。大企業のアーキテクチャは、あらゆる種類の永続ストレージで構成されており、それぞれが最善を尽くすように選択されています。したがって、それは良い慣行とは何の関係もありません。最も適した場所にデータを保存する必要があります。私が話していることをよりよく理解するには、特に Domain Driven Design と Bounded Contexts をご覧ください。

したがって、3 つのデータベースが必要かどうかという問題は、特定の状況でこれが最適なオプションである場合は、それを実行する必要があります。この回答を完成させるために、私たちの状況を説明します。ユーザーを含む古いユーザーデータベースがあります。すべての Web アプリが段階的に廃止されるまで、それを取り除くことはできません。お客様への影響を最小限に抑えるため。そのため、新しい Web アプリでは、この古いデータベースをユーザー用にのみ使用し、保存する必要があるその他すべてのものには Azure ストレージを使用します。つまり、概念的には、私たちの状況はあなたが説明したようなものです。他のすべての Web アプリが使用するユーザー用の個別のストレージ。

あなたにとって問題の良い解決策のように聞こえますか?

更新 MVC6 に関しては、Identity Server 3 固有です。ID サーバー 3 には、任意のユーザー ストレージを結合できるカスタム ユーザー サービスを使用する機能があります。詳細は次のとおりです: https://identityserver.github.io/Documentation/docs/advanced/userService.html。これはまさに私たちが行ったことです。

あなたの他の質問については; おそらくユーザーを Azure Table Storage に配置し、古いアプリがすべてなくなったら、IdentityServer4 を介してそこから取得します。現在、レガシー MySQL DB には何も残っていませんが、私たちのユーザーが残っています。しかし、まだそれを使用している古いアプリがいくつかあるので...

これはあなたの質問に答えていますか?

于 2016-04-04T07:44:32.413 に答える