I have defined an authentication pipeline like so in my
routers.ex file which go through the
Authenticate plug I have defined in my
pipeline :authentication do
And in the
call function of this plug I’m conditionally setting the
current_user inside the session like so:
def call(conn, default) do
current_user = authenticate_user(conn.params, conn |> get_session(:current_user))
conn |> put_session(:current_user, current_user)
This does the authentication part for me and the private routes are only available if
current_user exists in the session.
While this works, when I open a new tab I have go through the authentication part all over again to get the
current_user in the session.
How do, in general, make the session I’ve set in a tab I’m currently on available in all the new tabs that might open?
Which browser(s) this is happening in? You are sure you are not using Firefox with the thing that isolates tabs on?
It is not browser specific as such. The session is not available when I open a new tab once it has already been set. I tried it with different browsers.
Once authenticated, the session is only available in the tab it was set on.
So you go to second tab and it presents you with login page?
If this happens, and you refresh your original tab - are you still signed in there?
Yes, If I refresh that tab, I’m still signed in. But when I open a new tab I’m not signed in
I figured it out. Sorry about this
Looks like it is available in all tabs. In one of the tabs I had it open on
127.0.0.1:4000 and in all the other tabs that I was opening I had it open on
even though they point to the same process, they are essentially different domain names. and session cookies are domain name specific.
Thanks for the help
Ah yes, that would do it. Glad you figured it out!