我有 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
但是,当我进行查询时,永远不会调用中间件。是否可以匹配任何标识符,或仅匹配query
等mutation
?
此外,这是仅将中间件应用于某些查询/突变组的最佳方式吗?