2013-07-15 14 views
5

私は.Net MVC WebApiアプリケーションを持っており、Angularjsだけでフロントエンドを書き込もうとしています。 json経由でデータを取得して操作することができましたが、データを保護し、サーバー上のヘッダーにBase64認証を追加する必要があります。 .netビューのテストページを参照すると、ユーザー/パスを尋ねる適切なログインボックスが表示され、jsonを引き続き取得できます。AngularJs -.net MVC WebApi認証の例

私のやり方がわからないのは、$リソース内に角度が設定されているヘッダーにこの情報(ユーザー/パス)を渡すことです。これを行う方法をわかりやすく示す完全な例はありますか?私はそれがクッキーを含むことを知っているとサーバーが戻ってトークンを使用して、私は一緒に作品を配置する方法はわかりません。

私はこれをまとめて、すべてのレイヤー(DAL、RESTFUL、コンソールテストレイヤー)の完全なスケルトンの例を投稿したいと考えています。

したがって、AngularJS $リソースを使用しているときに、認証情報をクライアントのヘッダーに挿入する方法は?あなたは、サーバー側AngularJSにヘッダにクッキーを置く場合

おかげ

+0

私は本当に質問がここにあるのか分かりません。ヘッダーをAngularからどのように設定しますか?または...?また、あなたは何をしようとしましたか? –

+0

私は肉体に同意する、質問は非常に広いです。しかし、[Authenticate]アノテーションを使用すると、偽造防止象徴を出力するだけでなく、どこかにあなたを連れて来るはずです。 Phil Haackがここに書いた http://haacked.com/archive/2011/10/10/preventing-csrf-with-ajax.aspx – marko

答えて

3

は、このクッキーのすべての時間を送信します。.. Uは何の関係もありません。

アングル側のcxookieではなくヘッダーにトークンを渡したい場合は、設定ブロックの$httpProvider.defaults.headers.common['X-Auth'] = yourKey;を実行してください。

ユーザーがログに記録されているかどうかを知りたい場合、または権利を持っているかどうかを知りたい場合は、インターセプタを実装するだけです。これは、あなたのconfigブロック内のresponseIntercetorsを常にプッシュする単純なファクトリです。

この工場では、エラーの場合の応答のステータスコードを確認しますサーバーから、彼の実装上の各応答を待機します:

401 - >

を許可しない - > 403を記録していません工場の

例:

myModule.factory('myHttpInterceptor', function ($q) { 
    return function (promise) { 
     return promise.then(function (response) { 
      // do something on success    
      return response; 
     }, function (response) { 
      // do something on error 
      //check status 401 or 403 
      return $q.reject(response); 
     }); 
    }; 
}); 

その後、あなたのコンイチジクのブロックでは、このようなHTTP responseIntercetorsであなたの工場を置く:

myModule.config(function ($httpProvider) { 
    $httpProvider.responseInterceptors.push('myHttpInterceptor'); 
}); 

だけで(まだ不安定)この溶液をAngularJS 1.1.4で非推奨となって心に留めておく...

工場がちょうど詳細については、この記事を参照してください少し異なることがあります。AngularJS Intercept all $http JSON responses

を希望することができます