【问题标题】:raise custom error based on different conditions in resource_owner_authenticator in config/initializers/doorkeeper.rb根据 config/initializers/doorkeeper.rb 中 resource_owner_authenticator 中的不同条件引发自定义错误
【发布时间】:2015-03-05 08:58:08
【问题描述】:

我想根据不同的条件引发自定义错误并自定义错误响应。 对于身份验证,我有一些用户未通过身份验证的情况,例如, 非活跃用户、用户资料不完整等。

我遵循这个 #315 ,我配置了相同的但执行停止在它引发自定义门卫错误的行。

Doorkeeper.configure do resource_owner_authenticator do @user = User.find(session[:user_id]) || redirect_to(user_login_path(return_to: request.fullpath)) raise Doorkeeper::Errors::OwnError unless @user.status == 'active' end end

如果有人有任何线索,请帮忙。

【问题讨论】:

    标签: ruby-on-rails-4 doorkeeper


    【解决方案1】:

    在阅读 NEWS.md 文件之前,我遇到了同样的问题:

    - [#749] Allow user to raise authorization error with custom messages.
      Under `resource_owner_authenticator` block a user can
      `raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')`
    

    对于密码流 POST /oauth/token:

     resource_owner_from_credentials do |routes|
        raise Doorkeeper::Errors::DoorkeeperError.new('custom_message')
     end
    

    给出如下响应:

     {
          "error": "custom_message",
          "error_description": "The authorization server encountered an unexpected condition which prevented it from fulfilling the request."
     }
    

    【讨论】:

      【解决方案2】:

      你可能已经找到答案了,如果你还没有:

      将此添加到您使用 doorkeeper_authorize 的控制器中!

      def doorkeeper_unauthorized_render_options(error: nil)
        response_hash = { status: false, description: error.description, expired: false }
        response_hash[:expired] = true if error.description == "The access token expired"
        { json: response_hash }
      end
      

      这里的 respnse_hash 将是返回的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-29
        • 1970-01-01
        • 2018-05-16
        • 2015-07-14
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多