如何删除Phoenix会话?

She*_*yar 8 elixir phoenix-framework

我正在阅读凤凰城会议指南.它很好地解释了我如何使用put_session以后使用和获取值来将数据绑定到会话,get_session但它没有告诉我如何删除用户的会话.

从指南:

defmodule HelloPhoenix.PageController do
  use Phoenix.Controller

  def index(conn, _params) do
    conn = put_session(conn, :message, "new stuff we just set in the session")
    message = get_session(conn, :message)

    text conn, message
  end
end
Run Code Online (Sandbox Code Playgroud)

She*_*yar 12

Plug Docs中找到它:

clear_session(康涅狄格州)

清除整个会话.

此功能从会话中删除每个密钥,清除会话.

请注意,即使使用clear_session/1,会话仍会发送到客户端.如果应该有效地删除会话,则应使用configure_session/2,并将:drop选项设置为true.


你可以把这样的东西放在你的SessionsController:

def delete(conn, _) do
    conn
    |> clear_session
    |> redirect to: page_path(conn, :index)
end
Run Code Online (Sandbox Code Playgroud)

并在你的网站上添加一个路由web/router.ex.


Paw*_*rok 9

我认为你正在寻找的是configure_session:

Plug.Conn.configure_session(conn, drop: true)
Run Code Online (Sandbox Code Playgroud)

  • drop session将完全破坏它,迫使浏览器删除cookie.clear_session只是要清除会话中的数据,cookie继续存在. (7认同)