개발자
안녕하세요 슬랙처럼 로그인을 하면 워크스페이스 리스트가 나오고 해당 워크스페이스를 클릭하면 해당 워크 스페이스로 로그인이 되는 페이지를 구현하려 하는데요. Next.js를 사용중이고 iron-session 라이브러리 통해서 세션을 저장하고 있습니다. ex) app.oursite.com <- 통합 로그인 페이지 워크스페이스 클릭하면 해당 워크스페이스 로그인을 하고 세션을 저장해서 워크 스페이스 사이트로 redirect 시키려 하는데, const session = await getIronSession<Session>(cookies(), { cookieName: 'cookie', password: IRON_SESSION_SECRET_KEY, cookieOptions: { secure: false, // 로컬 테스트에서는 false, 실제 배포에서는 true로 설정 sameSite: 'Lax', // sameSite 옵션을 Lax로 설정 domain: 'localhost', // 로컬 테스트 시 domain 설정을 제거하거나 localhost로 설정 path: '/', }, }); {workspace1}.ourstie.com {workspace2}.ourstie.com 세션 저장이랑 redirect 처리했을때 세션 저장하고 해당 페이지 확인은 하였는데 해당 페이지에서 로그인 인증은 제대로 되지 않고 있습니다. 로그인 페이지로 이동되더라고요 로그인이 안되는 원인으로 짐작가는게 있으면 알려주시면 감사하겠습니다
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 06월 19일
여러 서브 도메인 간에 세션을 공유하는 것은 종종 CORS나 쿠키 설정 등에 의해 복잡하게 되곤 합니다. 이 문제 중 일부는 'SameSite' 쿠키 설정과 관련이 있을 수 있습니다. 'SameSite=Lax'를 사용하면, 현재 사이트와 동일한 사이트에서만 쿠키가 전송됩니다. 이것은 서브 도메인 간에 쿠키를 공유하기 어렵게 만듭니다. 전체 도메인 (예: '.oursite.com')에 대해 세션 쿠키를 설정하여 이 문제를 해결할 수 있습니다. 다음과 같이 변경해 보시기 바랍니다: ```javascript { cookieOptions: { secure: false, sameSite: 'None', domain: '.oursite.com', path: '/', } ``` 또한 주의할 점은 secure 옵션이 true로 설정되어 있는 경우, 브라우저는 HTTPS 연결에서만 쿠키를 전송하므로 배포 환경에서도 반드시 HTTPS를 사용해야 한다는 것입니다. 따라서 로컬 개발 환경에서 테스트하기 위해서는 secure 옵션을 false로 두거나, local development setup에 SSL을 구성하세요. 마지막으로 모든 브라우저가 동일한 방식으로 작동하지는 않으므로 브라우저 간 차이를 확인하는 것도 중요합니다. 고려해야 할 또 다른 측면은 CORS 설정입니다. 서버는 다른 도메인에서 요청을 허용하도록 CORS 정책을 올바르게 구성해야 합니다. 무엇이 문제였는지 확실히 파악하기 위해서는, 네트워크 탭을 확인하여 세션 쿠키가 실제로 응답 헤더에 있는지, 그리고 브라우저가 이를 저장하고 있지만 전송하지 않고 있는지 여부를 확인하는 것이 중요합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!