21

ASP.NET MVC3 を使用して開発した Web サイトがあります。
Web サイトと同じ機能を公開する REST API を公開して、他のユーザーが使用できるようにしたいと考えています。

Web サイトでは、ユーザーがログインし、資格情報が DB に対して検証されると、セッションはユーザーのログイン状態を管理します。
公開されているメソッドの多くでユーザーがログインする必要がある (または少なくとも有効なユーザー名とパスワードを持っている) 必要がある場合、REST API で同等のことを行うにはどうすればよいでしょうか?

これに加えて、REST API も使用することが Web サイトの最善のアプローチでしょうか (API がサイトに必要なすべての機能をカバーしていると仮定します)?

ASP.NET MVC3 は、このフレームワークを使用してサイトが既に存在することを考慮して、これにどの程度適していますか?

4

5 に答える 5

9

[ASP.NET MVC 3 アプリケーション内で RESTful API アーキテクチャを構築する] 方法に関するブログ記事を何年も前に書きましたが、サイトを手放すことになりました。:( REST API を MVC アプリケーションに組み込みたい場合は、良いスタートになるかもしれません。

適切なソリューションについては、WebAPI の使用に関する @tugberk の回答を参照してください。

于 2011-11-02T20:01:12.730 に答える
6

ASP.NET MVC は、これに非常に適しています。他のアプローチ (WCF など) を使用することもできますが、他の消費者に公開する必要がある作業サイトが既にあるため、MVC に固執します。

私の他の答えも参照してください:

Web サイトの API を構築するには、MVC と Ado.net データ サービスのどちらが適していますか?

于 2011-09-28T16:03:43.750 に答える
4

ノート:

WCFWebAPIはASP.NETWebAPIになり、大幅に変更されました。ベータ版が利用可能になりました。詳細情報:ASP.NET Web API入門-チュートリアル、ビデオ、サンプル

それを行うには、WCFWebApiを使用します。ASP.NET MVCも優れており、データを公開できますが、データをユーザーに公開することを検討している場合は、WCFWebApiの方が優れています。使いやすく、RESTWebAPIをシステムに統合するのは簡単です。

認証の場合、APIキーは常にこのタイプのシナリオに最適な方法です。これは、WCFWebAPIを使用してAPIAuthを実装する方法の良い例です。

http://weblogs.asp.net/cibrax/archive/2011/04/15/http-message-channels-in-wcf-web-apis-preview-4.aspx

ノート:

彼らは数週間前にプレビューバージョンをリリースしたばかりで、私が知る限り、メッセージチャネルはメッセージハンドラに変更されました。しかし、上記の記事はあなたにアイデアを与えるはずです。

セキュリティの実装については、以下も役立つ場合があります。

wcf認証トークンの実装-方法

于 2011-09-28T14:55:19.653 に答える
1

これには、ASP .NET MVC が最適です。RESTful サービスや Web サイトとして機能する ASP MVC をいくつか作成しました。

私が使用する設計パラダイムを要約すると、各コントローラーには、要求されたデータの JSON 表現を発行するアクションがあります。上記のデータはサーバー上のビュー モデルに読み込まれ、組み込みの JSON シリアライザーがサーバー側を処理しますが、jQuery ビューは実際の Web ページが使用できるようにデータを適切に読み込みます。

サイト自体には、必要なマークアップを発行する各コントローラーのインデックス アクションがありますが、データは発行しません。ページの jQuery document.ready メソッドは、基本的には残りの API からデータを読み込みますが、サイトに直接組み込まれます。

優れたサンプル コードについては、Nerd Dinner を参照してください。 http://nerddinner.com/

セキュリティに関しては、私の経験はあなたの経験とは異なると思います。ユーザーがすべて同じドメインに属し、AD 資格情報を持っている場合、ASP MVC は Active Directory と非常にうまく統合されます。これは私が使用した唯一の方法であり、簡単で、成功し、満足しています。

私は同僚に、authorize メソッドの呼び出し時にトークンを配布する他の A​​PI と対話させました。受け取ったトークンは、クライアントの責任で保存し、各リクエストに返しますが、私はその面での経験がないため、実装の詳細について話すことはできません.

于 2011-11-02T19:55:55.787 に答える
1

次のように、WCF Web サービスベースの実装を使用します。

  • たとえば、すべてのビジネス ロジックを yourproject.businessservices という名前の別の dll プロジェクトにラップします。
  • ユーザー ログインごとに繰り返し不可能なトークンを生成する認証 Web サービスを作成します。
  • このログインは、ユーザーの重要な詳細をトークンと共に MemCache のようなキャッシュに保存します。
  • ユーザーが 1 時間キャッシュにアクセスしなかった場合、キャッシュは期限切れになり、ユーザーはログアウトされます。
  • ユーザーがそれを使用している場合、キャッシュは拡張され続けます。

    wcf サービス側では、

  • 認証時にトークンを返す API を作成する

  • すべての wcf メソッドには、検証が必要なこのセッション ID があります。

    利点は、wcf メソッドを公開して xml または json 形式を返すことができ、通常の Web サービスとしても使用できることです。

    [WebInvoke(Method = "GET"、ResponseFormat = WebMessageFormat.Xml、BodyStyle = WebMessageBodyStyle.Bare、UriTemplate = "/MyModule/XML/GetData/{customerSessionId}")] [WebInvoke(Method = "GET"、ResponseFormat = WebMessageFormat. Json、BodyStyle = WebMessageBodyStyle.Wrapped、UriTemplate = "/MyModule/JSON/GetData/{customerSessionId}")]

于 2011-11-03T03:13:38.020 に答える