2013-11-24 51 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...';