gpt4 book ai didi

elixir - 我可以模式匹配函数参数内 Conn 中的 session 值吗?

转载 作者:行者123 更新时间:2023-12-04 18:35:25 24 4
gpt4 key购买 nike

我有一个 session key :identifiedas对用户来说可能存在也可能不存在。我希望这样,如果您在此键存在时转到登录页面,服务器会将您重定向到主页。

我可以使用 if来解决这个问题,但如果可能的话,与在另一个函数子句中使用模式相比,这似乎是一个坏主意。

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

关于elixir - 我可以模式匹配函数参数内 Conn 中的 session 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com