2013-11-24 50 views
3

如何在使用OData數據服務時告訴Breeze包含授權承載令牌標頭?使用BreezeJS OData數據服務傳遞授權承載令牌

//Configured breeze to use OData 
breeze.config.initializeAdapterInstance('dataService', 'OData'); 

//Configured breeze to use AngularJS ajax 
var instance = breeze.config.initializeAdapterInstance('ajax', 'angular', true); 

//Tried passing authorization bearer token header using setHttp with no success 
//NOTE: $http setup with $http.defaults.headers.common['Authorization'] = 'Bearer...' 
instance.setHttp($http); 

//Tried passing authorization bearer token header using ajax settings with no success 
instance.defaultSettings = { 
    headers: { 
     'Authorization': 'Bearer...' 
    }, 
}; 

//Fiddler shows no authorization bearer token header for following query 
var manager = new breeze.EntityManager('/odata/'); 
var query = breeze.EntityQuery.from('Customers'); 
return manager.executeQuery(query).to$q(querySucceeded, queryFailed); 
+1

你有沒有解決您的問題?我有同樣的問題 –

回答

3

我不知道你是否解決了你的問題。這爲我工作:

function configureBreeze() { 
      // configure to use the model library for Angular 
      breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true); 

      var accessToken = Security.user.access_token; 

      if (Security.user.access_token) { 
       // get the current default Breeze AJAX adapter & add header required for the   Web API bearer token mechanism 
       var ajaxAdapter = breeze.config.getAdapterInstance("ajax"); 
       ajaxAdapter.defaultSettings = { 
        headers: { 

         'Authorization': 'Bearer ' + accessToken 
        }, 
       }; 
      } 
     } 

它是Angular/Breeze SPA template爲asp.net MVC4的datacontext.js腳本發現configureBreeze方法的修改。

希望它有幫助。

+1

但不使用oData數據服務。我認爲這是造成問題描述的問題的原因 –

0

我有同樣的問題。查看oData的breeze dataservice之後,我認爲它只是忽略了ajax提供程序,因爲它使用datajs來執行請求。所以instance.setHttp($http);將無法​​正常工作。我結束了覆蓋默認request方法datajs這樣的:

var base = window.OData.request; 
    window.OData.request = function (request, success, error, handler, httpClient, metadata) { 
     angular.extend(request.headers, { Authorization: $rootScope.token }); 
     return base(request, success, error, handler, httpClient, metadata); 
    }; 
0

有一個在微風網站的樣品(下OData的AJAX):http://www.getbreezenow.com/documentation/controlling-ajax

var oldClient = OData.defaultHttpClient; 

var myClient = { 
    request: function (request, success, error) { 
     request.headers.Authorization = authorization; 
     return oldClient.request(request, success, error); 
    } 
}; 

OData.defaultHttpClient = myClient; 
0
//instance.defaultSettings = { 
// headers: { 
//  'Authorization': 'Bearer...' 
// }, 
//}; 

instance.headers['Authorization'] = 'Bearer...';