Accessing session_info in 1.12+

Hi everyone,

I have a streamlit app deployed on Azure, using the Microsoft SSO for user authentication.

I need to get some information on the active user.

Up until and including 1.10, I would get session_info like so:

session_id = streamlit.scriptrunner.get_script_run_ctx().session_id
session_info = streamlit.server.server.Server.get_current()._get_session_info(session_id)

Then, I would get the headers I need from session_info.ws.request.headers._dict.
I understand there have been some dramatic rearrangements in scriptrunner and server modules which broke this in 1.12.

That’s fair! No one ever promised it would work like a public API and I have 1.10 pinned so no problem there… but I would like to get this working again.

I found the scriptrunner and server modules again, but #a823b55 also removed the get_current class method from Server and now I’m at a loss. Can someone help me access to this information?

Hey @ennui,

Thanks for surfacing this! The Server.get_current() method disappearing was indeed a consequence of a major refactor to the Streamlit internals that had its first changes appear in 1.12.0. As far as I know, there’s no easy way to access websocket connection headers for a given browser tab with its removal (there may be some clever hack possible, but it’s non-obvious).

While this API was technically internal/undocumented, we also recognize that a lot of people rely on it for auth purposes. We’re currently considering ways to revive the functionality (potentially in a more user-friendly form) in a future release, and the status of this is being tracked in this GitHub issue: Accessing websocket headers in Streamlit 1.12.0 · Issue #5166 · streamlit/streamlit · GitHub.

1 Like

Thanks for the reply Vincent, I will wait at 1.11.1 until this comes back in some form.

Of course I understand the risk that comes with using these undocumented solutions. Then again a lot of integrated Streamlit features like session state or multipage apps started out as hacks :slight_smile: Let’s hope this follows the same route.

1 Like