deuszera
08/12/2023, 1:16 PM_app.tsx
file when using next?
I am using custom built UI and tried code like this on the `_app.tsx`:
const AUTHORIZED_UNLOGGED_URLS = [
'/signin',
'/signup',
'/password-recover',
]
function App ({ Component, pageProps }: AppProps): React.ReactElement | null {
useEffect(() => {
void (async () => {
if (await SessionJS.doesSessionExist()) {
if (AUTHORIZED_UNLOGGED_URLS.includes(window.location.pathname)) {
window.location.href = '/'
}
} else if (!AUTHORIZED_UNLOGGED_URLS.includes(window.location.pathname)) {
window.location.href = '/signin'
}
})()
}, [])
...
...but the thing is that when logging out, SessionJS.doesSessionExist()
still returns true after it's run immediatelly after running SessionJS.signOut
. So this results in more than 1 redirect and failed behavior, needing to reload the page in order to fall to the signin/ page again.rp_st
08/12/2023, 1:17 PMrp_st
08/12/2023, 1:18 PMrp_st
08/12/2023, 1:18 PMrp_st
08/12/2023, 1:18 PMdeuszera
08/12/2023, 1:18 PMasync function handleLogout (): Promise<void> {
await Session.signOut()
window.location.href = '/signin'
}
deuszera
08/12/2023, 1:18 PMdeuszera
08/12/2023, 1:19 PMimport Session from 'supertokens-web-js/recipe/session'
rp_st
08/12/2023, 1:19 PMdeuszera
08/12/2023, 1:20 PMdeuszera
08/12/2023, 1:20 PMrp_st
08/12/2023, 1:21 PMdeuszera
08/12/2023, 1:21 PMdeuszera
08/12/2023, 1:23 PM/api/auth/signout
deuszera
08/12/2023, 1:23 PMPOST /api/auth/signout HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://localhost:3000/
fdi-version: 1.16,1.17
rid: session
st-auth-mode: cookie
Origin: http://localhost:3000
Connection: keep-alive
Cookie: st-last-access-token-update=1691846499260; sAccessToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsInZlcnNpb24iOiIyIn0%3D.eyJ1c2VySWQiOiJkZXYtdWlkIiwiZXhwaXJ5VGltZSI6MTY5MTg1MDA5OTI1MCwidGltZUNyZWF0ZWQiOjE2OTE4NDY0OTkyNTAsInNlc3Npb25IYW5kbGUiOiJkMWNkOGQxYy0xNDI4LTQ5NjMtYWFjYS1lNjNmZDkwNzkxODciLCJyZWZyZXNoVG9rZW5IYXNoMSI6IjVmMDQ3NmQ0NDg3NzhjNWIwMmU5MWI0NTc5MjgxZjU5YmRiNThhOTkwYzc2MzkxNmQ2NDNjMGI3MzJkYTMyNzUiLCJ1c2VyRGF0YSI6e319.dzfEdMr3QSMmHecLkDrWluczQvdC7LHd4n3qTgJ5ZR6N2bYfGNrU6aPIyxbM1xHn9vheEdo08Q9yayQNOH7urijnBz5rp55wAzhrXSyoJ6N1eWAfZzg3%2FCWnxE891PWYbmBBQD0S7kTdbCtHK3ve%2BMWkL16ihLCqR%2FYQTrY8lNUfHF9cJJE%2FfhK3Z6cT1R4r15uTDBjli5wdLCFbrFLIUGOyQ68Zjlk4nPl8VXSfdoyr%2BC2hCw%2BLOETquTT0SqnR94%2FtimySVepj4svZS8W2cdyPfIvwrEDdfcwL7jLVfvQnOKZ6eCB5%2FAECOm0N2%2F0IsuybT0SojdMSWSFt57mVGQ%3D%3D; sIdRefreshToken=0987a698-ce3b-4ed5-940c-a37890a34bc4; sFrontToken=eyJ1aWQiOiJkZXYtdWlkIiwiYXRlIjoxNjkxODUwMDk5MjUwLCJ1cCI6e319
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Content-Length: 0
deuszera
08/12/2023, 1:23 PMHTTP/1.1 200 OK
Set-Cookie: sAccessToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Lax
sRefreshToken=; Path=/api/auth/session/refresh; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Lax
sIdRefreshToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Lax
id-refresh-token: remove
Access-Control-Expose-Headers: id-refresh-token
Content-Type: application/json; charset=utf-8
ETag: "rqm6itsib3f"
Content-Length: 15
Vary: Accept-Encoding
Date: Sat, 12 Aug 2023 13:21:42 GMT
Connection: keep-alive
Keep-Alive: timeout=5
rp_st
08/12/2023, 1:24 PMrp_st
08/12/2023, 1:24 PMdeuszera
08/12/2023, 1:24 PM"supertokens-node": "^9.0.0",
"supertokens-web-js": "^0.7.2",
rp_st
08/12/2023, 1:24 PMdeuszera
08/12/2023, 1:24 PMdeuszera
08/12/2023, 1:25 PMrp_st
08/12/2023, 1:25 PMrp_st
08/12/2023, 1:26 PMdeuszera
08/12/2023, 1:26 PMrp_st
08/12/2023, 1:27 PMdeuszera
08/12/2023, 1:27 PMrp_st
08/12/2023, 1:27 PMrp_st
08/12/2023, 1:27 PMdeuszera
08/12/2023, 1:28 PMdeuszera
08/12/2023, 1:31 PMrp_st
08/12/2023, 1:31 PMdeuszera
08/12/2023, 1:32 PMdeuszera
08/12/2023, 1:36 PMdeuszera
08/12/2023, 1:36 PMrp_st
08/12/2023, 1:37 PMdeuszera
08/12/2023, 1:38 PM