Ruby on rails 无法访问http_基本块内的任何Grape::API方法/对象

Ruby on rails 无法访问http_基本块内的任何Grape::API方法/对象,ruby-on-rails,ruby,gem,Ruby On Rails,Ruby,Gem,我正在使用为我的应用程序创建API。在我将http基本身份验证添加到构建在GrapeAPI中的api之前,一切都很好 以下是我的代码: require 'grape' module MyApp class API < Grape::API prefix 'api' version 'v1' helpers do def current_user @current_user ||= User.authenticate(env)

我正在使用为我的应用程序创建API。在我将http基本身份验证添加到构建在GrapeAPI中的api之前,一切都很好

以下是我的代码:

require 'grape'

module MyApp
  class API < Grape::API
    prefix 'api'
    version 'v1'

    helpers do
      def current_user
        @current_user ||= User.authenticate(env)
      end

      def authenticate!
        error!('401 Unauthorized', 401) unless current_user
      end
    end

    resources :projects do

      http_basic do |u,p|
        authenticate!                    #=> Results in undefined method `authenticate!' for MyApp::API:Class (NoMethodError)
        error! "401 Unauthorized", 401
        !current_user.nil?
      end
    end
  end
end
需要“葡萄”
模块MyApp
类API导致未定义的方法“authenticate!”对于MyApp::API:Class(NoMethodError)
错误!“401未经授权”,401
!当前_user.nil?
结束
结束
结束
结束
似乎我无法访问http_basic块中的任何方法或对象,包括request、env、helpers方法中的任何内容,甚至不能访问error

看看代码,这是没有意义的


以前有人见过这个吗?有人举过将葡萄API与http基本身份验证结合使用的例子吗?web上的示例不是真实世界的示例。

Grape将http\U基本块作为过程存储在其设置哈希中。
Grape::API
中的
build\u endpoint
方法将所有这些集合到:

Rack::Builder.new.use Rack::Auth::Basic, "API Authorization", &your_block
此时您的助手不可用。(见附件)

您可以尝试在没有助手的情况下通过在
用户
模型中使用类方法来实现此功能,如下所示:

http_basic do |user, password|
  User.authenticate(user, password)
end

如果
User
也不可用,请使用上面一行中的
Rack::Builder
实现您自己的基本身份验证

但是你如何让经过身份验证的用户(也就是当前用户)出来呢?医生的问题也是我的问题。我想设置一个可从http_basic块访问API调用的变量,但这听起来可能不起作用,因为http_basic块最终位于创建它的Grape API类之外。