⚙️ tested ver: 4.5.0
next-auth
버젼에서 클라이언트 사이드에서 session 정보를 업데이트 해야 되는 케이스가 있었다email_verified (boolean)
을 업데이트 해야 한다 /*
* 업데이트 된 토큰값을 반환
*/
const res = await fetch('/api/auth/session?update')
const jwt = await res.json()
server-side
에서만 업데이트가 되어있고 useSession
getSession
을 통해 가져온 session은 업데이트가 되어있지 않은 것을 확인할 수 있다const { data: session } = useSession()
// session: {
// ...
// email_verified: true
// }
const res = await fetch('/api/auth/session?update')
const jwt = await res.json()
const jwt = await res.json()
// jwt: {
// ...
// email_verified: true
// }
Conditions:
1. 새로고침을 했을 때
2. 다른 탭을 클릭하고 다시 해당 탭을 다시 접근
next/router
를 사용하게되면 새로고침 없이 페이지 전환이 되기때문에 session이 업데이트 되지 않는다const res = await fetch('/api/auth/session?update')
const jwt = await res.json()
if (jwt.email_verified) {
const redirect = someCallbackUrl
window.location.href = someCallbackUrl
}
visibilitychange
이벤트를 강제로 실행하는 helper
함수를 만들어 사용export const reloadSession = async () => {
const res = await fetch('/api/auth/session?update')
const jwt = await res.json()
const event = new Event('visibilitychange')
document.dispatchEvent(event)
}