如何使用Pow对Phoenix套接字进行身份验证?

时间:2020-04-10 17:59:56

标签: elixir phoenix-framework elixir-pow

据我所知,从会话中认证用户的唯一方法是使用Pow.Plug.authenticate_user / 2,但这需要一个Plug.Conn而不是一个套接字。我希望我的user_socket.ex文件以Phoenix生成的connect / 3函数中的常规方式对连接进行身份验证,但是我不确定如何使用Pow进行此操作。

我了解到身份验证通常是使用Phoenix.Tokens在connect / 3中完成的,但是我的会话已经包含通过PowPersistentSession扩展创建的令牌,并且由于跨源攻击,显然无论如何都无法通过websocket访问会话。

问我如何访问频道中的会话;我在问如何使用Pow对套接字进行身份验证

1 个答案:

答案 0 :(得分:0)

AFAIK,没有简单的方法可以使用Pow验证WebSocket连接,因为Phoenix不会向开发人员公开ws连接的握手阶段。问题是为什么您不想使用默认的令牌身份验证策略?只要对令牌进行签名的密钥足以防止客户端伪造令牌,Phoenix通道的令牌身份验证就相当不错。