I have a form with :remote => true which means it will be submitted through ajax.
In the controller, I have such code:
before_filter: authenticate_us
It is quite funny but change in devise.rb http_authenticatable_on_xhr to false
config.http_authenticatable_on_xhr = false
did the trick for me... without overriding authenticate_user! method
note: I also added :js to navigational formats
config.navigational_formats = [:"*/*", "*/*", :html, :js]
You need do your own authenticate_user! action and in this action you can have the behaviour your want.
def authenticate_user!
unless current_user
render 'my_js'
end
end