Ruby on rails 需要对炫耀文件的授权
我正在使用Ruby on rails 需要对炫耀文件的授权,ruby-on-rails,swagger,grape-api,Ruby On Rails,Swagger,Grape Api,我正在使用grape、grape-swagger和grape-swagger-rails为我的rails 4.2.1项目设置API。它将是一个内部API,所以我希望开发人员能够访问它,而不是普通公众。最好的方法是什么 我最初的想法是利用api_key字段,您可以在swagger ui中设置该字段,但我无法找到在Grape的根api生成器中访问它的正确方法 我还认为,如果用户是管理员(我们使用的是Desive),我可以尝试只装载文档的端点,但这不会隐藏文档本身(如果有人知道swagger.json
grape
、grape-swagger
和grape-swagger-rails
为我的rails 4.2.1项目设置API。它将是一个内部API,所以我希望开发人员能够访问它,而不是普通公众。最好的方法是什么
我最初的想法是利用api_key
字段,您可以在swagger ui
中设置该字段,但我无法找到在Grape的根api生成器中访问它的正确方法
我还认为,如果用户是管理员(我们使用的是Desive),我可以尝试只装载文档的端点,但这不会隐藏文档本身(如果有人知道swagger.json
链接)
过去人们是如何处理这个问题的?您可以使用
巫术
进行身份验证,它添加了几种非常方便的方法(在下面的登录?
示例中)和配置/初始化器/swagger.rb
添加:
GrapeSwaggerRails.options.before_filter do |request|
unless logged_in?
redirect_to Rails.application.routes.url_helpers.root_path
end
end
也可以使用
api_键
。在您的类API
中,只需在块之前添加,以检查API_键
值是否正确,通过params
访问它并不完全符合您的要求,但可能会引起一些人的兴趣
要使swagger ui在生产中保持基本身份,请执行以下操作:
# routes.rb
GrapeSwaggerRails::Engine.middleware.use Rack::Auth::Basic do |username, password|
username == 'foo' && password == 'bar'
end if Rails.env.production?
mount GrapeSwaggerRails::Engine, at: "/swagger"
实际上,我似乎无法访问初始化器中params
中的api\u key
。我不想将它声明为每个API方法的参数。我不是指在一个初始值设定项中访问API\u key
,而是在app/API/name/API.rb
中的之前的块中。这样,就不需要将它声明为每个API方法的参数。