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.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.