我使用的是Phoenix,在router.ex
中,我定义了一个函数,在继续通过api进行路由之前,验证用户的JWT令牌,以保护路由。然而,我遇到的问题是,如果我在插头中返回403的状态,它将继续路由,并且我最终会遇到错误,因为我正在访问路由并且不允许访问。
我的代码看起来像这样:
def validate(conn, _opts) do
if !Map.has_key?(conn.cookies, "jwt") do
conn
|> send_resp(403, "Forbidden")
# I would like to have something here that stops further
# routing - i.e. a way to say 'already sent a response; don't keep going'
end
end
以下是Plug.Conn.send_resp/3
的摘录
请注意,此函数不会停止连接,因此如果后续插头尝试发送另一个响应,它将出错。如果要停止塞子管道,请在此函数之后使用
halt/1
。