Persist session across page refreshes via sessionStorage
Credentials are saved to sessionStorage on login and restored on mount, so a page refresh re-authenticates silently. Closing the tab clears them. Logout explicitly removes them. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
21388b7646
commit
37a6645af0
@ -26,6 +26,8 @@ export default function App() {
|
||||
async function handleLogin(user, pass) {
|
||||
setCredentials(user, pass)
|
||||
await api.getSources().then(s => {
|
||||
sessionStorage.setItem('df_user', user)
|
||||
sessionStorage.setItem('df_pass', pass)
|
||||
setSources(s)
|
||||
if (!source && s.length > 0) setSource(s[0].name)
|
||||
setAuthed(true)
|
||||
@ -35,20 +37,19 @@ export default function App() {
|
||||
|
||||
function handleLogout() {
|
||||
clearCredentials()
|
||||
sessionStorage.removeItem('df_user')
|
||||
sessionStorage.removeItem('df_pass')
|
||||
setAuthed(false)
|
||||
setLoginUser('')
|
||||
setSources([])
|
||||
}
|
||||
|
||||
// On mount, restore session if credentials are saved
|
||||
useEffect(() => {
|
||||
if (!authed) return
|
||||
api.getSources().then(s => {
|
||||
setSources(s)
|
||||
if (!source && s.length > 0) setSource(s[0].name)
|
||||
}).catch(err => {
|
||||
if (err.status === 401) handleLogout()
|
||||
})
|
||||
}, [authed])
|
||||
const user = sessionStorage.getItem('df_user')
|
||||
const pass = sessionStorage.getItem('df_pass')
|
||||
if (user && pass) handleLogin(user, pass).catch(() => handleLogout())
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
if (source) localStorage.setItem('selectedSource', source)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user