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

发布于 2024-11-30 02:56:47 字数 524 浏览 0 评论 0原文

我正在遵循 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 一起使用时)。

谁能帮我解决这个问题吗?

I am following authentication method described at http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx

I am able to consume service using ASP.NET (not a problem at all). Now I would like to create a plain HTML page and access the service using "OData Javascript Library" (datajs).

If I disable authentication and request for data, it works fine. I could not find any sample code on how to send authentication header information using "datajs" (when used with OData.Request and/or OData.Read).

Can anyone help me on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光清浅 2024-12-07 02:56:47

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

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

您可以编写如下内容:

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

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

希望这有帮助!

If you're using basic authentication as described in the post, you can use the request parameter of OData.request to pass in the username and password.

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

You could write something like:

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

Note that this will not work with cross-domain AJAX.

Hope this helps!

七禾 2024-12-07 02:56:47

如果您使用 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  
     });

If you are using datajs library for service integration then you can either use above method to odata service or you can use below method as shown in example.
Here I have setted headers in variable 'oHeader' and passing it using 'btoa' function which encodes credentials.

  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  
     });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文