add request header on backbone

backbone.js, jquery

Solution

Models in Backbone retrieve, update, and destroy data using the methods `fetch`, `save`, and `destroy`. These methods delegate the actual request portion to Backbone.sync. Under the hood, all `Backbone.sync` is doing is creating an ajax request using jQuery. In order to incorporate your Basic HTTP authentication you have a couple of options.

`fetch`, `save`, and `destroy` all accept an additional parameter `[options]`. These `[options]` are simply a dictionary of jQuery request options that get included into jQuery ajax call that is made. This means you can easily define a simple method which appends the authentication:

sendAuthentication = function (xhr) {
  var user = "myusername";// your actual username
  var pass = "mypassword";// your actual password
  var token = user.concat(":", pass);
  xhr.setRequestHeader('Authorization', ("Basic ".concat(btoa(token))));
}

And include it in each `fetch`, `save`, and `destroy` call you make. Like so:

 fetch({
  beforeSend: sendAuthentication 
 });

This can create quite a bit of repetition. Another option could be to override the `Backbone.sync` method, copy the original code and just include the `beforeSend` option into each jQuery ajax request that is made.

Hope this helps!

Problem

My server has a manual authorization. I need to put the username/password of my server to my backbone request inorder for it to go through. How may i do this? Any ideas? Thank you

Original source

Related problems