Phonegap App communicate with Rails 3 App using au

2019-08-12 16:48发布

问题:

I am trying to write an iOS app using Phonegap to communicate with my Rails3 app. I cannot figure out how to handle authentication. I am using Devise/Warden in my Rails app.

I am able to login successfully in my iOS app via ajax but then subsequent calls are giving me a "Unauthorized". It appears that the session cookie isn't getting set in my iOS app.

How do I keep my iOS app aware of my rails authenticated session?

回答1:

The answer was two fold.

First I had to add this to my ajax requests in the iOS app:

xhrFields: {
  withCredentials: true
}

as in...

$.ajax({
    url: ....,
    type: "GET",
    xhrFields: {
        withCredentials: true
    },
    complete: hideLoader,
    error: function(xhr,txt,err) {
        // you can't get back anyways
        window.location.hash = "";
    },
    success: function(data,status,res) {
        window.location.hash = "";
    }
}); 

Second I had to add this to my Application Controller in the Rails app:

def protect_against_forgery?
  unless request.format.json?
    super
  end
end