4

最近リリースされた ASP.NET Identity 2.0.0 を 3 層 MVC アプリケーションに統合しようとしています。正しい方向に進んでいるかどうかはわかりません。取るべきアプローチは 2 つあります。

最初のアプローチでは、Identity を各論理レイヤーに統合しました。いくつかの技術的な問題が統合されていますが、まだ開発中です。

2 番目のアプローチでは、セキュリティ専用の自己完結型カプセル化アセンブリを使用します。

現時点ではアプローチ1を使用していますが、すべてに疑問があります。また、他に取るべきアプローチはありますか?


アプローチ1

Web
Startup.cs
/App_Start/Startup.Auth
/Controllers/Account
/Controllers/Manage
/Controllers/RolesAdmin
/Controllers/UserAdmin
/ViewModels
/Views

Business Logic
/Service/AccountService
/Service/ApplicationRoleManager
/Service/ApplicationUserManager
/Service/EmailService
/Service/SmsService
/Service/SignInHelper

Data
ApplicationDbContext
ApplicationUser

したがって、私は単純に Identity を取得し、適合する各レイヤーにプラグインしました。ログは Web に属さず、データ層に属する「実際の」データベース コードがないため、ほとんどのログをビジネス ロジック層に配置しました。

副次的な問題: Web/App_Start/Startup.Auth で、Busness Logic オブジェクトをインスタンス化して呼び出す必要があることに少し違和感があります。

app.CreatePerOwinContext(ApplicationDbContext.Create);

データ層で。私はまだこれについてもっと考えていません。これは別の問題です (ただし、選択したアーキテクチャに関連しているようです)。


アプローチ 2

レイヤーを含まないセキュリティ専用のアセンブリを作成します。つまり、Identity 2.0.0 をこの 1 つのアセンブリにプラグインするだけです。そして、私のアプリケーションはこれを参照できます。しかし、それはレイヤーに反します。しかし、それはセキュリティをカプセル化します。セキュリティ オブジェクトがアプリケーションの存続期間全体にわたって常駐できる (または常駐する必要がある) ことを考えると、これはまったく悪い考えではないように思えます。ただし、スケーラビリティについては考えていません。

4

1 に答える 1