Phoenix Framework的Plug.Conn中assign和put_session有什么区别?

时间:2017-09-30 11:53:57

标签: session elixir phoenix-framework

文档(https://hexdocs.pm/plug/Plug.Conn.html)列出了两个允许在conn中存储键值对的函数

assign(conn, key, value)
  

为连接中的键指定值

put_session(conn, key, value)
  

将指定值放入给定键的会话中

这两个功能有什么区别?

1 个答案:

答案 0 :(得分:13)

基本上assign仅适用于特定连接 - Plug.Conn结构 - 这意味着在请求/响应周期结束时,该值将随着请求的结束而消失 - 因为conn也会死亡

会话的寿命更长,并且存储在cookie或ets中。多亏了你保持eg。有关跨请求成功登录用户的数据。

TL; DR:

assign适用于每个请求,并在请求周期结束后消失。

put_session在会话中插入一个值,直到会话清除/过期才可用。