안녕하세요 제로초님 강의 잘 듣고 있습니다. 사실 이 문제가 몇개월동안 계속 해결이 안되어서 강의를 수강한거나 마찬가지인데요. 아무리 스택오버플로우나, next.js issue에 직접 글을 올려도 해결이 안되어서 이렇게 질문 글 올립니다. 일단 Next.js 14 + Express 조합으로 배포를 한 상황이고 jwt 토큰을 쿠키에 담아서 로그인 기능을 구현했습니다. 또한 next.js Middleware 내부에서 액세스토큰을 재발급 받아주고 있습니다. 순서는 이렇습니다. 로그인 시에 사용자가 아이디 + 비밀번호를 입력해서 서버에게 요청한다. 서버에서 해당 아이디 값을 받아서 조회 후, 새로운 리프레시 토큰 + 액세스 토큰을 클라이언트로 보내준다. 백엔드 내부 코드는 다음과 같습니다. const newAccessToken = createNewAccessToken(existingUser); const newRefreshToken = createNewRefreshToken(existingUser); const hashedToken = await hashValue(newRefreshToken); await deleteRefreshTokenData(existingUser.id); await createRefreshTokenData(hashedToken, existingUser.id); return res.json({ success: true, accessTokenValue: newAccessToken, refreshTokenValue: newRefreshToken, }); Next.js 측에서 액세스 토큰과 리프레시 토큰을 받아서 API ROUTE로 POST 요청을 날려서 set cookie를 해준다. const sendTokenCookieToHandler = async (accessTokenValue: string, refreshTokenValue: string) => { await fetch('/api/token', { method: 'POST', body: JSON.stringify({ accessTokenValue, refreshTokenValue }), headers: new Headers({ 'Content-Type': 'application/json', }), cache: 'no-store', }); }; export default sendTokenCookieToHandler; ``` 그 후 액세스 토큰이 만료 되면, Next.js 미들웨어 단에서 리프레시 토큰을 다시 백엔드로 보내서 새로운 액세스 토큰을 받아온다. Next.js 미들웨어 코드는 이렇습니다. export async function middleware(request: NextRequest) { const { accessToken, refreshToken } = getTokenValues(request); if (!accessToken && refreshToken) { const res = await getNewAccessToken(refreshToken); if (res && res.newAccessToken) { const response = NextResponse.next(); const { newAccessToken } = res; response.cookies.set('accessToken', newAccessToken, { expires: new Date(Date.now() + 24 * 60 * 60 * 1000), }); return response; } } return NextResponse.next(); } ``` 받아온 액세스 토큰 값을 아예 middleware 단에서 set cookie 를 통해 쿠키로 설정해준다. 근데 여기서 문제는 초기에는 정상적으로 잘 작동합니다. 액세스 토큰이 만료 된 후에도 정상적으로 새로운 액세스토큰을 받아오기도 하고요 근데 문제는 일정 시간 후에(제가 생각했을때 리프레시토큰이 만료 된 후, 다시 로그인 요청을 보냈을때 같습니다.) 아예 새로운 리프레시 토큰과 액세스 토큰을 제대로 받아오지 못하는거 같습니다. 근데 F12 를 켜서 확인해보면 백엔드로 api 콜은 정상적으로 가고 있습니다.. 그래서 현재 다시 재배포를 할때마다 초기 상태로 돌아가서 로그인이 정상적으로 작동 하게 되는데요. 어디가 문제인걸까요 ? 여러 오픈톡이나 커뮤니티에 물어봤지만, 어떤분은 Next.js 내부에서 같은 라우트 그룹이면 미들웨어를 거치지 않아서 발생하는 문제라고도 하시는데 초기 배포 당시에, 리프레시 토큰을 처음에 잘 받았을때 일부러 액세스 토큰을 삭제하고 다시 새로고침하면 액세스 토큰을 제대로 잘 받아오고 있습니다.. 도저히 아무리 이리저리 수정해봐도 몇개월 동안 고치지 못해서 이렇게 글 남깁니다. 읽어주셔서 감사합니다.
안녕하세요. mmdetection 뿐만 아니라 , mmsegmentation 에서도 적용을 해보고자 합니다. 이때 mmdetection에서 사용하는 from mmdet.datasets import build_dataset의 경우 mmsegmentation에서는 어떻게 import하는지 궁금합니다.
모든 강의를 듣고 따라하면서 재미나게 실습했습니다. 그 중에서 롤백테스트할 때 jakarta.transaction.Transactional 또는 org.springframework.transaction.annotation.Transactional 의 @Transactional 만을 사용하면 정상동작합니다. 그런데, org.springframework.transaction.annotation.Transactional @Transactional(readOnly = true) readOnly = true 를 사용하여 테스트를 하면 insert 가 진행되지 않을 것을 예상했는데 진행이 되었습니다. 왜 그런지 궁금합니다. 그리고, 인프런안의 Kotlin 강좌중 추천할만한 강의가 있을까요? 어제 유튜브에서 최근의 건강에 대해서 언급하셨는데, 건강하고 늘 행복하게 보내세요.
안녕하세요 선생님.. 구글클라우드로 알려주신것처럼 사용했는데요 (3월달쯤) 무료크래딧 받고, 하루이틀 사용하다가 그 뒤에는 그냥 로컬로 사용했습니다. 그런데 오늘보니까 6만원이 미납됬다고,. 그래서 결제를 하라고 하는데. 이거 결제해야하는건가요? ㅠ 거의 쓰지도 않았는데, 그냥 과금이 되버리는건지 어째야하나요ㅜㅜ
안녕하세요 선생님! 웹디자이너로 취업하고 싶어 강의를 생각하다가 예전에 웹디자인기능사 실기도 선생님께 배웠고 해당 강의도 이미 구매했던 것이 기억이 나서 공부하는 중입니다 ㅎㅎ 웹디자이너도 퍼블리싱을 어느정도는 해야한다고 알고 있는데, 시즌1과 시즌2를 공부하면서 웹디자이너의 필수역량을 키울 수 있을까요? 아니면 해당 내용은 부수적인 역량일까요? 고민이 되어 여쭤봅니다!
안녕하세요. 리플렉션 관련 강의를 보다 궁금한게 생겨 질문드립니다. FProperty* 를 통해 리플렉션을 통해 변수의 값을 가져오는 강의의 내용을 보다가, FProperty가 뭔지 궁금해서 엔진 코드를 약간 열어보다가 UProperty와 함께 리플렉션을 위한 클래스인 것을 알게 되었습니다. 두 개는 각각 FField, UField(이것의 경우 UObject까지 상속받기는 함)을 상속받는데, FField나 UField나 주석이 똑같이 Base class of reflection data objects. 라고 작성되어 있는데 설명된 문서도 못 찾겠어서 뭔지 잘 모르겠습니다. UField, FField 나 UProperty, FProperty 등 U나 F 접두사가 다른 리플렉션 클래스들이 무엇이 다르고 차이점과 용도가 어떻게 다른 것인가요?