Passing session keys in headers for Embjer.JS Data REST calls

First thing you have to do is to override the RESTAdapter if you aren’t already. The ajax function is the key. It is given the jQuery hash that will get passed down so all you have to do is to populate the beforeSend key with a function like below. The ‘xhr’ passed in can be set with a request header value.​

DS.MyAppRESTAdapter = DS.RESTAdapter.extend({

ajax: function(url, type, hash) {

hash.beforeSend = function (xhr) {
if (MyApp.isLoggedIn()) {
xhr.setRequestHeader('x-token', MyApp.session.token);
}
};

// handle errors if ember-data doesn't already
if (hash.error == undefined) {
hash.error = function(xhr) {
this.didError(null, type, null, xhr);
}
}
// do some other work and call super()
...
this._super(url, type, hash);
},

didError: function(store, type, record, xhr) {
if (xhr.status == 401) { ... }
}
});

​That’s it! Your app should now be firing off request headers like a pro! I’ve also left my basic error handling code to catch instances when ember-data simply does nothing. This will probably change in the future leading up to a stable 1.0.

Still learning this stuff, happy to hear about a better way to do it if you know :).


Comments

2 responses to “Passing session keys in headers for Embjer.JS Data REST calls”

  1. richard Avatar
    richard

    Thanks for sharing!

    1. Dineth Mendis Avatar
      Dineth Mendis

      I intend to write a lot more about my Ember experiences as I’m realising all the missteps I have taken!! Haha

Leave a Reply

Your email address will not be published. Required fields are marked *