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) {
|
async function handleLogin(user, pass) {
|
||||||
setCredentials(user, pass)
|
setCredentials(user, pass)
|
||||||
await api.getSources().then(s => {
|
await api.getSources().then(s => {
|
||||||
|
sessionStorage.setItem('df_user', user)
|
||||||
|
sessionStorage.setItem('df_pass', pass)
|
||||||
setSources(s)
|
setSources(s)
|
||||||
if (!source && s.length > 0) setSource(s[0].name)
|
if (!source && s.length > 0) setSource(s[0].name)
|
||||||
setAuthed(true)
|
setAuthed(true)
|
||||||
@ -35,20 +37,19 @@ export default function App() {
|
|||||||
|
|
||||||
function handleLogout() {
|
function handleLogout() {
|
||||||
clearCredentials()
|
clearCredentials()
|
||||||
|
sessionStorage.removeItem('df_user')
|
||||||
|
sessionStorage.removeItem('df_pass')
|
||||||
setAuthed(false)
|
setAuthed(false)
|
||||||
setLoginUser('')
|
setLoginUser('')
|
||||||
setSources([])
|
setSources([])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On mount, restore session if credentials are saved
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!authed) return
|
const user = sessionStorage.getItem('df_user')
|
||||||
api.getSources().then(s => {
|
const pass = sessionStorage.getItem('df_pass')
|
||||||
setSources(s)
|
if (user && pass) handleLogin(user, pass).catch(() => handleLogout())
|
||||||
if (!source && s.length > 0) setSource(s[0].name)
|
}, [])
|
||||||
}).catch(err => {
|
|
||||||
if (err.status === 401) handleLogout()
|
|
||||||
})
|
|
||||||
}, [authed])
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (source) localStorage.setItem('selectedSource', source)
|
if (source) localStorage.setItem('selectedSource', source)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user