elixir - 苦艾酒中间件未在查询中应用/运行
问题描述
我有 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
?
此外,这是仅将中间件应用于某些查询/突变组的最佳方式吗?
解决方案
import_fields
在 middleware/2 回调中使用导入的组无法匹配。您可以查看__private__
在对象/字段上设置标志,看看是否可以匹配。
推荐阅读
- angular - 到 ContentChildren 的角度绑定宽度
- ruby-on-rails - 在 Rails 中添加属性以选择字段
- javascript - 反应选择元素值是将状态设置为先前选择的选项值吗?
- php - 每个 PHP,使用特定键的值
- python-3.x - 使用三元运算符过滤字符串
- reactjs - 在单个管道中进行多次扫描所需的步骤
- ruby-on-rails - 等效于 as: json 在 ruby on rails 中执行调用时
- ggplot2 - 多面面板上的 geom_text() 会导致符号映射发生变化
- assembly - 如何在每次循环迭代时将变量增加 0.321 - x86 程序集
- java - sendkeys(keys.Down) 和 sendkeys(keys.Arrow_Down) 之间的区别