Ruby on rails 无法访问http_基本块内的任何Grape::API方法/对象
我正在使用为我的应用程序创建API。在我将http基本身份验证添加到构建在GrapeAPI中的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)
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类之外。