如何处理devise的authenticate_user!用ajax电话?

时间:2012-03-28 05:46:21

标签: ruby-on-rails devise

我有一张表格:remote =>是的,这意味着它将通过ajax提交。

在控制器中,我有这样的代码:

before_filter: authenticate_user!, :only => [:create]

因为我只允许确认的用户创建资源。

但是,当身份验证失败时,设计会引发

Completed 401 Unauthorized

并且不会呈现不显眼的javascript。

但我希望事情是这样的:

设计在flash中设置一些消息,并渲染我的.js.erb,然后我向用户显示flash。

如何实现它?

2 个答案:

答案 0 :(得分:10)

这很有趣但是将devise.rb http_authenticatable_on_xhr更改为false

config.http_authenticatable_on_xhr = false

为我做了诀窍......没有覆盖authenticate_user!方法

  

注意:我还添加了:js到导航格式

config.navigational_formats = [:"*/*", "*/*", :html, :js]

答案 1 :(得分:3)

您需要自己做authenticate_user!行动,在这个行动中你可以得到你想要的行为。

def authenticate_user!
  unless current_user
    render 'my_js'
  end
end