Как аутентифицировать сокет Phoenix с помощью Pow? - PullRequest
0 голосов
/ 10 апреля 2020

Насколько я могу судить, единственным средством аутентификации пользователя из его сеанса является использование Pow.Plug.authenticate_user / 2, но для этого требуется Plug.Conn, а не сокет. Я хочу, чтобы мой файл user_socket.ex аутентифицировал соединения обычным способом в функции connect / 3, сгенерированной Phoenix, но я не уверен, как это сделать с Pow.

Я понимаю, аутентификация обычно выполняется в connect / 3 с использованием Phoenix.Tokens, но мой сеанс уже содержит токен, созданный с помощью расширения PowPersistentSession, и, по-видимому, в любом случае небезопасно получать доступ к сеансу в веб-сокетах из-за перекрестных атак. * 100 не спрашивает, как я могу получить доступ к сеансу в канале; Я спрашиваю , как я могу аутентифицировать сокет, используя Pow .

1 Ответ

0 голосов
/ 13 апреля 2020

AFAIK, не существует простого способа аутентификации соединения WebSocket с использованием Pow, поскольку Phoenix не раскрывает фазу рукопожатия ws-соединений разработчику. Вопрос в том, почему вы не хотите использовать стратегию аутентификации токена по умолчанию? Аутентификация токенов каналов Phoenix довольно хороша, если ключ подписи токенов достаточно силен, чтобы клиентская сторона не могла подделать токен.

...