tadasajon
Here are the docs for Plug.Conn.get_session: Plug.Conn.html#get_session/1
And here is the key line from the docs:
Returns the whole session.
And here are the docs for Plug.Conn.fetch_session: Plug.Conn.html#fetch_session/2
And here is the key line:
Fetches the session from the session store. Will also fetch cookies.
Can anyone explain to me why there are two functions that appear to do almost the same thing? Why would I use one vs the other? What is the session store – why doesn’t get_session also get the session from the “session store”? Or does it?
Also, in a nutshell, what is the difference between a connection and a session? It seems to me like I should just be able to do something like conn.session – in fact, I don’t understand why there is something called a session if I already have a connection – why can’t any information stored in the session just be stored in the connection instead?
I don’t understand why there need to be these backflips between connections and sessions.
Trending in Questions
Other Trending Topics
Latest Phoenix Threads
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #elixirconf-us
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 5- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
LostKobrakai
Session store is the place the session data is stored in between separate http requests. This by default is a cookie, but could also be some server-side database.
fetch_sessiondoes retrieve the session data from the session store to put it onto theconnof your current web request.get_sessionis the API to fetch session values from the set present onconnwhile handling a requestAfter you’re done handling a certain http request the session data on
connis put back into the session storage for persistance until the next http request.tadasajon
Thanks! Maybe I’ll submit a PR to the
Plug.Conndocs to make it clear thatfetch_sessiondoes not return the session but rather returns the connection.hauleth
Well, it says exactly that in “Specs” section of the documentation of that function.
tadasajon
Yes, but not everyone reads specs fluently – a lot of people prefer plain English. So rather than sending people off to do a tutorial on how to read specs, it is better just to be clear, in my opinion.
derek-zhou
The fact that
fetch_session/2is sparsely documented is also in part due to the fact that it is a plug and not a function you normally call yourself.