GraphQL ruby​​突变的授权

时间:2017-07-19 15:39:08

标签: ruby graphql

还是GraphQL的新手,

这个想法是为了“安全”。突变,意味着限制那些在上下文中传递给当前用户的突变。基本的一个:

Create = GraphQL::Relay::Mutation.define do

    name "AddItem"

    input_field :title, !types.String
    return_field :item, Types::ItemType
    return_field :errors, types[types.String]

    resolve -> (object, inputs, ctx) {
      if ctx[:current_user]
        ... do the stuff...
      else
         ...returns an error...
      end
    }
end

让我们对一个有多个突变的人说...这种情况必须在每次需要时重复。

我明显偏向轨道中可用的before_action; graphql-ruby中有类似的东西吗? (例如,'受保护的突变' ,无论如何都希望在集中设置中有选择地保护可用输出的特定部分)

或者方法应该完全不同?

1 个答案:

答案 0 :(得分:1)

截至撰写本文时,GraphQL规范并未定义与authz / authn有关的任何内容。一般来说,人们将他们的GraphQL层放在某种网关之后,并使用查询传递auth令牌。如何做到这一点取决于您的实施。在JavaScript GraphQL服务器中,有一个“上下文”将传递给所有解析器。

换句话说,在解析器级别保护查询和突变是GraphQL中的最佳实践。

特定于Ruby,它看起来确实有一个付费版本的软件,内置了一些很好的auth功能。

http://graphql-ruby.org/pro/authorization