Session Phoenix框架的Plug.Conn中的assign和put_会话有什么区别?

Session Phoenix框架的Plug.Conn中的assign和put_会话有什么区别?,session,elixir,phoenix-framework,Session,Elixir,Phoenix Framework,文档()列出了两个函数,它们允许在conn assign(conn, key, value) 为连接中的键指定值 将给定密钥的指定值放入会话中 这两个功能之间的区别是什么?基本上assign仅适用于特定的连接-Plug.Conn结构-这意味着该值将随着请求结束而消失-因为Conn也将在请求/响应周期结束时消失 会话寿命更长,存储在cookie或ets中。正因为如此,您在请求中保留了成功登录用户的数据 TL;博士: assign适用于每个请求,并在请求周期结束后清除 put\u session在

文档()列出了两个函数,它们允许在
conn

assign(conn, key, value)
为连接中的键指定值

将给定密钥的指定值放入会话中


这两个功能之间的区别是什么?

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

会话寿命更长,存储在cookie或ets中。正因为如此,您在请求中保留了成功登录用户的数据

TL;博士:

assign
适用于每个请求,并在请求周期结束后清除


put\u session
在会话中插入一个值,该值在会话被清除/过期之前一直可用。

插件文档真的应该以这种详细程度进行更新,这样可以避免很多混乱。
put_session(conn, key, value)