首页 > 解决方案 > 苦艾酒中间件未在查询中应用/运行

问题描述

我有 Absinthe 中间件,可以检查经过身份验证的用户的上下文,如下所示:

defmodule CliftonWeb.Middlewares.CheckAuth do
  @behaviour Absinthe.Middleware
  require Logger

  def call(resolution, _config) do
    case resolution.context do
      %{current_user: _} ->
        resolution
      _ ->
        resolution
        |> Absinthe.Resolution.put_result({:error, "unauthenticated"})
    end
  end
end

然后将其应用于我的架构中:

defmodule CliftonWeb.Schema do
  # Imports and plugin setup etc...


  def middleware(middleware, _field, %{identifier: :student_queries} = object) do
    [CliftonWeb.Middlewares.CheckAuth | middleware ]
  end

  def middleware(middleware, _field, object), do: middleware

  query do
    import_fields :student_queries
    # etc...
  end

end

但是,当我进行查询时,永远不会调用中间件。是否可以匹配任何标识符,或仅匹配querymutation

此外,这是仅将中间件应用于某些查询/突变组的最佳方式吗?

标签: elixirphoenix-frameworkabsinthe

解决方案


import_fields在 middleware/2 回调中使用导入的组无法匹配。您可以查看__private__在对象/字段上设置标志,看看是否可以匹配。


推荐阅读