Elixir 如何删除Phoenix会话?
我要通过考试。它很好地解释了如何使用Elixir 如何删除Phoenix会话?,elixir,phoenix-framework,Elixir,Phoenix Framework,我要通过考试。它很好地解释了如何使用put\u session将数据绑定到会话,然后使用get\u session获取值,但它没有说明如何删除用户的会话 从指南中: defmodule hellophenix.PageController do 使用菲尼克斯控制器 def索引(conn,_参数)do conn=put_会话(conn,:message,“我们刚刚在会话中设置的新内容”) 消息=获取会话(连接:消息) 文本连接,消息 结束 结束 我想你要找的是: 在以下目录中找到它: 清除整个会
put\u session
将数据绑定到会话,然后使用get\u session
获取值,但它没有说明如何删除用户的会话
从指南中:
defmodule hellophenix.PageController do
使用菲尼克斯控制器
def索引(conn,_参数)do
conn=put_会话(conn,:message,“我们刚刚在会话中设置的新内容”)
消息=获取会话(连接:消息)
文本连接,消息
结束
结束
我想你要找的是:
在以下目录中找到它:
清除整个会话
此函数用于从会话中删除每个密钥,清除
会议
请注意,即使使用了clear_session/1,会话仍会被发送
给客户。如果会话被有效地中断,
configure_session/2应与:drop选项设置为true一起使用
您可以在
会话控制器中放置类似的内容:
def delete(连接)do
康涅狄格州
|>清除会话()
|>重定向(到:页面路径(连接:索引))
结束
并在您的web/router.ex
中为此添加一条路由。如果要删除特定会话,应使用:
conn |> fetch_session |> delete_session(:session_to_delete)
更多信息请点击此处:
仅用于删除您之前创建的会话,然后重定向到登录或其他
例如:
# In this example I use a log_out link to delete session when user click in it.
def log_out(conn, _params) do
conn
|> delete_session(:session_name)
|> redirect(to: Routes.auth_path(conn, :login))
end
重要的是将修改后的conn
返回,并取下您放在其中的钥匙。谢谢,我不知道要带什么<代码>清除会话
或配置会话
。也不确定,但conn |>配置会话(:drop)
似乎完全破坏了它,所以如果您想更安全一些,只要尝试一下,我就会得到异常:(Protocol.undeinderror)协议访问未为:drop实现,仅支持nil atom
drop会话将完全禁用它,迫使浏览器删除cookie。clear_会话只是要清除会话中的数据,cookie继续在那里。如何检查会话是否为nil/空
# In this example I use a log_out link to delete session when user click in it.
def log_out(conn, _params) do
conn
|> delete_session(:session_name)
|> redirect(to: Routes.auth_path(conn, :login))
end