如何使Devise身份验证仅响应JSON?

时间:2013-03-04 15:02:59

标签: ruby-on-rails json devise

如何在Devise处理HTML和XML请求时禁用并仅保留JSON?

3 个答案:

答案 0 :(得分:6)

我想你可以覆盖设计控制器:

controllers/devise_overrides/sessions_controller.rb

class DeviseOverrides::SessionsController < Devise::SessionsController

  respond_to :json
  respond_to :html, only: []
  respond_to :xml, only: []

end

routes.rb

devise_for :users, controllers: {
  sessions:  "devise_overrides/sessions"
}

答案 1 :(得分:1)

module DeviseOverrides
  class SessionsController < Devise::SessionsController
    # Respond only to JSON calls
    clear_respond_to
    respond_to :json
  end
end

答案 2 :(得分:0)

您必须 clear_respond_to (用于清除以前定义的所有类型,例如HTML或XML),然后在覆盖控制器中 respond_to:json ...

config / routes.rb

devise_for :users , controllers:{
  sessions: 'users/sessions',
  registrations: 'users/registrations'
}

控制器/用户/会话

class Users::SessionsController < Devise::SessionsController
    clear_respond_to 
    respond_to :json
end

控制器/用户/注册

class Users::/RegistrationsController < Devise::RegistrationsController
    clear_respond_to 
    respond_to :json
end

对我来说,它在Rails 5.2中有效!