【问题标题】:How to make Devise authentication respond to JSON only?如何使 Devise 身份验证仅响应 JSON?
【发布时间】:2013-03-04 15:02:58
【问题描述】:

如何在设计处理 HTML 和 XML 请求时禁用并只保留 JSON?

【问题讨论】:

    标签: ruby-on-rails json devise


    【解决方案1】:

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

    在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"
    }
    

    【讨论】:

      【解决方案2】:

      您必须 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!

      【讨论】:

        【解决方案3】:
        module DeviseOverrides
          class SessionsController < Devise::SessionsController
            # Respond only to JSON calls
            clear_respond_to
            respond_to :json
          end
        end
        

        【讨论】:

          猜你喜欢
          • 2011-05-30
          • 2011-06-18
          • 2020-10-06
          • 2014-02-25
          • 2014-01-11
          • 2016-06-18
          • 1970-01-01
          • 1970-01-01
          • 2019-09-22
          相关资源
          最近更新 更多