2

VS2013 RTW MVC テンプレート (「個々のユーザー アカウント」用) で新しい ASP.NET ID を試してみましたが、うまく機能しています。データをシリアル化する方法をカスタマイズしながら、Facebook ログインを統合することができます。

まったく問題ありませんが、(MVC の代わりに) 新しい SPA アプリを作成すると、認証の話が大きく異なることに気付きました。例として:

SPA テンプレートから:

    public AccountController()
        : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
    {
    }

    public AccountController(UserManager<IdentityUser> userManager,
        ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
    {
        UserManager = userManager;
        AccessTokenFormat = accessTokenFormat;
    }

MVC テンプレートから:

    public AccountController()
        : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
    {
    }

    public AccountController(UserManager<ApplicationUser> userManager)
    {
        UserManager = userManager;
    }

これは、Account コントローラーのコンストラクターの違いにすぎません。他にも多くの違いがあります。MVC バージョンでは、ApplicationDBContext から独自のコンテキスト クラスを簡単に派生させ、それを使用して認証テーブルと一緒に独自のテーブルを格納することができました。SPA テンプレートでデータ ストレージをカスタマイズする方法がわかりませんでした。

また、SPA テンプレートには、次のクラスが含まれ、使用されます。 public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider

MVC テンプレートは、このクラスを定義 (または使用) しません。

MVC テンプレートと SPA テンプレートの間に違いが必要な理由がわかりません。

これら 2 つのテンプレートで認証の処理が異なる理由について、誰かが私にガイダンスを与えることができますか? プロジェクトをゼロから開始する場合、両者の間でたどる優先パスはありますか? (特に、カスタム EF Context クラスを定義してデータの格納方法をカスタマイズするという点では、MVC テンプレートのコードが最適のようです。)

ありがとう...

-ベン

4

2 に答える 2

4

MVC および SPA プロジェクト テンプレートをController vs ApiController実装サンプルとして使用します。CookieAuthentication と oAuthAuthentication だけでなく。

  • MVC は、最初のリクエストと後続のすべてのリクエスト (リクエストでアクション メソッドが定義されている) でコントローラーを使用します。
  • SPA は、SPA への最初の要求でコントローラーを使用し、他のすべての対話は ApiController によって処理されます。
  • MVC は Cookie 認証を使用します。
  • SPA は oAuth 認証を使用します。

実際のアプリでは、両方を組み合わせる必要があります。これを述べると、IdentityModel.cs (ApplicationDBContext) を使用できます。これは、SPA でも MVC プロジェクトのカスタマイズされたコピーです。

oAuth 実装では、トークンは のGrantResourceOwnerCredentialsメソッドで発行されApplicationOAuthProviderます。ユーザー検証は、デフォルトで Identity フレームワークの同じデータベースを使用します。さらに、oAuth は ApiController で認証チェックを提供します。サンプル実装では、oAuth の ResourceOwner フローが提供され、ユーザーのユーザー名とパスワードが検証されます。

私の意見では、テンプレートは出発点の例です。

于 2013-10-20T07:31:06.743 に答える