我正在尝试在ruby中创建一个 Restful json api-所以我在Rack内使用grape(https://github.com/intridea/grape)。
我没有在该项目中使用Rails,因此cancan,巫术等……似乎不是最好的选择。另外,我不希望将命令式逻辑混入grape的声明式DSL中。

尽管grape内置了身份验证支持,但我看不到任何有关授权的信息。似乎这是一条很常见的用例,以前可能会走过这条路,但是在谷歌和grape代码库本身进行了相当深入的挖掘之后,我什么都没发现。

有人在他们的葡萄项目中实现过类似的东西吗?你用了什么?

最佳答案

这可能为时已晚,但无论如何。我建议您使用Pundit进行授权,这非常简单。要在Grape API端点中使用它,您需要包括Pundit帮助器:

class API < Grape::API
  format :json

  helpers Pundit
  helpers do
    def current_user
      resource_owner
    end
  end

  mount FoosAPI
end

现在,在API端点中,您应该能够像在Rails Controller 中一样使用authorize foo, action?:
class FoosAPI < Grape::API
  get ':id' do
    foo = Foo.find(params[:id])
    authorize foo, :show?
    present foo, with: FooEntity
  end
end

希望能帮助到你!

关于ruby - {grape}授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14966210/

10-10 02:00