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