【发布时间】:2019-07-07 15:16:39
【问题描述】:
我们使用 Guardian 生成令牌,然后在连接到 Phoenix Channels 的套接字时用于身份验证。
最近我们发现有些用户从不离开某些页面,并且在一个月左右之后,令牌变得无效,这使得凤凰频道的连接尝试无效。
您如何在客户端处理此类情况?有没有特定的错误可以从 Phoenix 返回让前端知道是什么原因? user_socket.ex 中的 connect 函数如下所示:
def connect(%{"guardian_token" => token}, socket) do
case Guardian.Phoenix.Socket.authenticate(socket, MyApp.Guardian, token) do
{:ok, authed_socket} ->
{:ok, authed_socket}
{:error, _} ->
:error
end
end
有没有办法使用 Phoenix 频道的 Phoenix JS 库捕获此错误?我们的目标是 1)在令牌过期时阻止它重试,2)可能注销用户或显示用户离线的消息。我们检查了Phoenix JS' documentation,但找不到合适的。
【问题讨论】:
-
这是一个非常古老的问题,但客户端似乎仍然没有办法知道“错误”是否是因为连接断开(可能是在重新部署应用程序时)或来自身份验证错误,如无效令牌。
标签: elixir phoenix-framework phoenix-channels