- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我开始构建一个非常小的 API,我需要验证一些端点,而不是所有端点。我希望能够选择使用要在“路由”正文中调用的 authenticate!
方法来强制验证的端点。
例如:
resource :groups do
desc 'List all groups.'
get do
authenticate!
{ groups: "list of groups v1"}
end
end
我有这个工作。我使用了一个帮助程序,我使用以下方法从 header 手动获取 base64 编码数据:request.env["HTTP_AUTHORIZATION"]
。如果用户和 secret 属于注册用户,我解码该数据并检查数据库。这工作正常,但我想使用 Grape 的助手来避免所有 base64 解码等:
http_basic do |username, password|
end
我的想法是在该方法中始终返回 true,将用户名和密码分配给@username 和@password,并有一个帮助程序获取这些变量并检查数据库。一切正常,问题是对于不需要身份验证的路由,因为“授权” header 为空,会出现要求输入密码的弹出窗口,我想避免这种情况。有没有办法使用助手来做我想做的事情??
顺便说一句:我正在使用安装在 rails-api 上的葡萄
谢谢!
最佳答案
好的,如果我没看错的话,您不希望出现用户名/密码框,而是在您的代码中决定您是否确实需要身份验证信息。
Grape 本身使用默认的 Rack::Auth::Basic
类。如果您创建此类的自定义版本,您应该能够在调用方法的开头进行断言,甚至可以将任何其他变量传递给您的 http_basic
block 。
然后您可以通过以下方式将身份验证策略添加到 Grape:
# Add authorization strategy to grape and replace default http_basic
Grape::Middleware::Auth::Strategies.add(:http_basic, Your::Namespace::CustomizedBasicAuth, ->(options) { [options[:realm]] })
这样也无需在 @username
和 @password
中保存凭据。您可以只包含或引用此身份验证策略中的逻辑。
尽管如此,我仍然更愿意将 API 分成两部分,正如 Eric 已经提到的那样。
关于ruby - 葡萄获取用户名 :password from BasicAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152403/
我正在尝试在 ruby 中创建一个 Restful json api - 所以我在 Rack 中使用 grape ( https://github.com/intridea/grape )。我没有
我正在研究一个示例 Ruby/Grape 示例,除了 json 被转义外,一切正常。我也是全新的 ruby 及其框架(仅 3 天),如果这个问题是补救性的并且提前谢谢你,我很抱歉 我相当确定不应该
我的 Grape 应用程序有几个错误处理程序,最后包括: rescue_from :all, backtrace: true do |e| message = { errors: { all: e
我有带 Grape API 的 Rails 应用。 接口(interface)由 Backbone 完成,Grape API 为其提供所有数据。 它返回的都是用户特定的东西,所以我需要引用当前登录的用
我的 Grape API 接受 json 格式,我有接受 JSON 作为参数的方法: desc 'JSON test' params do requires :json, type: JSON e
如何避免重复代码? resource 'api/publication/:publicationName' do params do requires :type, type: Strin
首先: 我正在使用 grape 构建我的 API (Rails 4)。当有人发送无效的 JSON 正文时(例如忘记最后一个 }),会引发以下错误: ActionDispatch::ParamsPars
我正在尝试让 Grape API 以 json 格式回答其所有动词。问题是我无法回答 json 格式的路由错误。我什至无法挽救 ActionController::RoutingError。 我已阅读
我正在用 grape 编写一个 API 服务器,我选择使用 grape-entity 因为它能够自动生成 swagger 的文档。但是现在我在按要求设置参数时遇到了问题。因为葡萄不验证参数是否存在。看
在 Grape 中,如果您使用 错误! 方法它会抛出一个错误并且永远不会调用 Grape::Endpoint “after”回调。 我希望应用程序在出错时调用后 Hook !已被调用。 我添加了这个中
我正在使用 Grape on Rails 4.2 构建 API。这是 GitHub 上的 repo 链接. 在前端,我有一个用 EmberJS 构建的 JavaScript 应用程序。这是 GitHu
使用 grape 从 json 创建新的 ActiveRecord 的正确方法是什么?我是否在我的用户模型中使用 attr_accessible 来避免 ActiveModel::ForbiddenA
我是一名优秀的程序员,十分优秀!