我正在尝试在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/