Elixir 我可以在函数参数内的Conn中匹配会话值吗?
我有一个会话密钥Elixir 我可以在函数参数内的Conn中匹配会话值吗?,elixir,phoenix-framework,Elixir,Phoenix Framework,我有一个会话密钥:标识为用户可能存在也可能不存在的。我想这样,如果你去登录页面,而这个关键存在,服务器重定向到主页你 我可以使用if来解决这个问题,但如果可能的话,与在另一个function子句中使用模式相比,这似乎是个坏主意 def login(conn, %{"username" => username, "password" => password}) do if Plug.Conn.get_session(conn, :identifiedas) do conn
:标识为用户可能存在也可能不存在的
。我想这样,如果你去登录页面,而这个关键存在,服务器重定向到主页你
我可以使用if
来解决这个问题,但如果可能的话,与在另一个function子句中使用模式相比,这似乎是个坏主意
def login(conn, %{"username" => username, "password" => password}) do
if Plug.Conn.get_session(conn, :identifiedas) do
conn
|> Flash.put(:notice, "You are already logged in.")
|> redirect(to: "/")
else
# Actually try to login. Elided from example.
end
end
我更希望它是:
def login(%Conn{:something -> %{:identifiedas => _}, _fields) do
conn
|> Flash.put(:notice, "You are already logged in.")
|> redirect(to: "/")
end
def login(conn, %{"username" => username, "password" => password}) do
# Elided
end
对。您可以使用以下模式:
def index(conn = %Plug.Conn{private: %{plug_session: %{identifiedas: _}}}, _params) do
# ...
end