我有一个用于Graphql API的Absinthe的Phoenix应用程序。
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响应?
发布于 2018-11-20 08:22:24
我的建议是创建一个插件,它将验证持有者令牌并在上下文中设置当前用户。然后,您可以编写一个Absinthe.Middleware来验证当前用户是否存在,并在不存在时设置一个错误。
此外,还可以在blunder-absinthe上查看更好的错误。
https://stackoverflow.com/questions/53351695
复制相似问题