如何将身份验证标头传递给OData服务

时间:2011-08-17 04:38:53

标签: odata wcf-data-services datajs

我正在关注http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx

中描述的身份验证方法

我能够使用ASP.NET消费服务(根本不是问题)。现在我想创建一个纯HTML页面并使用“OData Javascript Library”(datajs)访问该服务。

如果我禁用身份验证和请求数据,它可以正常工作。我找不到任何关于如何使用“datajs”发送认证头信息的示例代码(当与OData.Request和/或OData.Read一起使用时)。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

如果您正在使用帖子中描述的基本身份验证,则可以使用OData.request的请求参数来传递用户名和密码。

http://datajs.codeplex.com/wikipage?title=datajs%20OData%20API#OData.request

你可以这样写:

OData.request({requestUri:"...", user:"user", password:"secret"}, function (data) { ... });

请注意,这不适用于跨域AJAX。

希望这有帮助!

答案 1 :(得分:0)

如果您正在使用datajs库进行服务集成,那么您可以使用上述方法进行odata服务,也可以使用下面的方法,如示例所示。 在这里,我在变量' oHeader'中设置了标题。并使用' btoa'传递它编码凭证的功能。

  var oHeaders = {};   
  var uName="abc";
  var pass="123";
  var requrl="{service path}";

   oHeaders['Authorization'] = "Basic " + btoa(uName +':'+ pass);

     var request = {
         headers: oHeaders,
         requestUri: requrl,
         method: "GET",
     };
     OData.request(request, function(data) {
               //  success block    
     }, function(data) {
               //  error block  
     });