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
I understand there have been some dramatic rearrangements in
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
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?
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.
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 Let’s hope this follows the same route.