Phoenix framework 获取Phoenix框架通道中的conn分配

Phoenix framework 获取Phoenix框架通道中的conn分配,phoenix-framework,Phoenix Framework,我需要在我的频道从我的指挥部获得一些信息。例如: def handle_in("save", params, socket) do values = Poison.decode!(params) current_user = conn.assigns.current_user changeset = current_user |> build_assoc(:posts) |> Post.changeset(values)

我需要在我的频道从我的指挥部获得一些信息。例如:

def handle_in("save", params, socket) do
    values = Poison.decode!(params)

    current_user = conn.assigns.current_user
    changeset =
      current_user
      |> build_assoc(:posts)
      |> Post.changeset(values)

    case Repo.insert(changeset) do
      {:ok, _} ->
        {:reply, :ok, socket}
      {:error, reason} ->
        {:reply, {:error, %{:msg => reason}}, socket}
    end
  end
但康涅狄格州显然不在这里。我应该如何获取分配?

套接字具有镜像conn上分配的

如果要获取用户,需要使用函数并在连接套接字时传递值

模板中的类似内容:

<%= tag :meta, name: "channel_token", content: Phoenix.Token.sign(@conn, "user", @current_user.id) %>
然后,您可以像这样验证套接字中的令牌(取自):

const token = document.querySelector('meta[name=channel_token]').getAttribute('content');
const socket = new Socket('/socket', {params: {token: token}});
defmodule MyApp.UserSocket do
  use Phoenix.Socket

  def connect(%{"token" => token}, socket) do
    # Max age of 2 weeks (1209600 seconds)
    case Phoenix.Token.verify(socket, "user", token, max_age: 1209600) do
      {:ok, user_id} ->
        socket = assign(socket, :user, Repo.get!(User, user_id))
        {:ok, socket}
      {:error, _} ->
        :error
    end
  end
end