0

3つのレイヤーで構成されるASP.NET MVC5プロジェクトでASP.NET Identity 2.0を使用します。 Webアプリケーション(プレゼンテーション層)、単体テスト(テストプロジェクト)、クラスライブラリ(データ層)。 IdentityConfig.csは、WebアプリケーションのApp_Startフォルダにありますが、thisページのグループベースのアクセス許可管理を実装すると、Webプロジェクトではなく、すべてのドメインモデルとIdentityConfig.csファイルをデータレイヤプロジェクトのIdentityフォルダに保存します。 (プレゼンテーション層)。 IdentityConfig.csは私のデータレイヤプロジェクトに配置されたDbContextクラスにアクセスする必要があるためです。これに何か問題はありますか?一方、App_Startフォルダは少し説明できますか?ここでApp_StartフォルダからASP.NET ID IdentityConfig.csを移動

は、下の私のプロジェクトにASP.NETアイデンティティのフォルダ構造です:

DataLayer(クラスライブラリ)

コンクリート
EFDbContext

エンティティ(私のエンティティクラスを除きますASP.NET IDエンティティから)

アイデンティティ
ApplicationGroupManager
ApplicationGroupStore
GroupStoreBase
IdentityConfig
IdentityModels


プレゼンテーション層(Webアプリケーション)

App_Sta RT

コントローラ
AccountController
GroupsAdminController
ManageController
RolesAdminController
UsersAdminController
限り、あなたはasp.netのアイデンティティを持っているとして、あなたはそれへの参照を追加する必要があります

答えて

1

プレゼンテーションレイヤー(Webプロジェクト)と設定がそこから開始されます。

データアクセス層に移動した場合は、データアクセスにセキュリティ上の懸念がありますが、これは正しくありません。

通常、私は自分のユーザークラスを作成してIDを使ってApplicationUserクラスにリンクしますが、それを分離しなければならない場合は、別のライブラリにIdentityConfigを置くことができますこのレイヤーはすべてのレイヤーで機能するため、セキュリティ、ロギング、例外処理などのクロスカッティングの問題があります。

データアクセスでは、カスタムユーザーとロールストアを用意し、クロスカッティングライブラリに設定を入れ、プレゼンテーションレイヤのすべてをリンクすることができます。これがウェブアプリケーションのキックオフポイントです。

App_Startは、アプリケーションの起動時に実行されるコードを持っているジュスタ通常のフォルダで、あなたが任意の他に、すべての返信を

+0

おかげファイルのGlobal.asaxによって呼び出され、このコードを置くことができ、私は上記の質問にファイル構造を追加しました... –

+0

>>>私はちょっと混乱しています。もちろん、セキュリティは主な関心事ですが、 ** 1)** ** DataLayer **フォルダ内のすべてのクラスを** PresentationLayer **に移動することをお勧めしますか? ** 2)** IdentityModelsをPresentationLayerに移動するとどうなりますか? ** 3)**すべてをPresentationLayerに移動すると、** EFDbContext **にアクセスする必要がありますが、それが良いかどうかはわかりません。それは大丈夫ですか?したがって、全体的に、ASP.NET Identity関連のすべてのクラスとモデルをIdentityModelsクラスを含むPresentationレイヤーに移動することをお勧めしますか? –

+0

あなたはasp.netアイデンティティを使用している限り、完全な分離をすることはできません。それを行う唯一の解決策は、自分のアイデンティティシステムを構築することです。私の場合、私は常に妥協します。プレゼンテーション層にasp.netのアイデンティティーを独自のコンテキストで保持することによって節約される努力は、分離よりはるかに高いです。 –

関連する問題