Phoenix.Socket? Там прям непроходимая стена выстроена зачем-то.
Я задавался таким вопросом... Но ещё не разбирался.
Я сгенерировал auth - и хотел бы иметь доступ в LiveView ко всему этому...
там вообще websocket-ы прикручены в виде костыля, например plug-и просто пропускаются. И доступ к содержимому Plug.Conn там максимально обрезан, можно, фактически, получить лишь url да params, даже печенек не дают. Так что да, тут либо перегруженный Plug.Session с прибитым гвоздями conn.params["_csrf_token"], либо передавать токен в виде пути через socket "/sock/:token", …; больше вариантов я пока не нашёл. Что ж, существование есть страдание (с).
так, пжди, а зачем он тебе?
без него в websocket-ах не получить доступа к Plug-вской сессии, то бишь вообще никак. Там всё очень жёстко в коде, настолько жёстко, что даже немного наводит на паранойю (phoenix/lib/phoenix/socket/transport.ex): def connect_info(conn, endpoint, keys) do for key <- keys, into: %{} do case key do … {:session, {key, store, store_config}} -> conn = Plug.Conn.fetch_cookies(conn) with csrf_token when is_binary(csrf_token) <- conn.params["_csrf_token"], …
а так-то да, хороший вопрос. Насмотревшись на подобный код, хочется выкинуть эти сессии куда подальше и нагородить своё через uri path
Обсуждают сегодня