0

我有一个带有苦艾酒的 Phoenix 应用程序,用于 Graphql API。

Guardian 用于验证在标头中提供 Bearer 令牌的请求。在提供无效令牌之前,这一切都很好。我在我的 Guardian 管道中指定了一个错误处理程序,它目前只响应 401 http 响应:

def auth_error(conn, {type, _reason}, _opts) do
    body = to_string(type)

    conn
    |> put_resp_content_type("text/plain")
    |> send_resp(401, body)
end

这对任何 graphql 客户端都不友好,我的解析器并不真正关心令牌是否无效,因为他们有自己的检查来查看上下文中是否提供了用户。

如果令牌无效,有没有办法从错误处理程序继续管道,所以我可以给出正确的 graphql 响应?

4

1 回答 1

1

我的建议是创建一个 Plug 来验证 Bearer 令牌并在上下文中设置当前用户。然后你可以编写一个Absinthe.Middleware来验证当前用户是否存在,如果不存在则设置错误。

此外,请查看blunder-absinthe以获得更好的错误。

于 2018-11-20T00:22:23.743 回答