작성
·
5K
0
강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)
질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요.
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!
구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.
기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다.
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요.
• 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
안녕하세요 제로초님!
현재 상품을 등록하는 서비스를 만들려고 진행 중에 있습니다.
다름이 아니라 http://localhost:3000/host/make/ 가 초기 화면이 되고
http://localhost:3000/host/make/title -> http://localhost:3000/host/make/thumbnail
-> http://localhost:3000/host/make/place -> http://localhost:3000/host/make/runningSchedule
이런식으로 순차적으로 input 값들을 받고 리덕스에 넣어둔 후 마지막 input 값들을 받는 페이지에서 dispatch해서
서버와 통신하는 식으로 진행하려고 합니다.
프론트 단에서 로그인한 사용자만 접근할 수 있도록 해놓은 상태입니다.
그런데 로그인한 사용자가 직접 URL을 접근하게 되면 받아야할 카테고리들을 건너뛰고 접근이 가능하게됩니다.
이럴 경우 redirect로 처음 input값을 받는 곳으로 보내고 싶은데
node에서는 마지막 input을 받는 곳과의 통신만 되어있어서 get요청에 대한 redirect를 못하는 상황입니다.
이럴 경우 하나씩 전부 프론트 단에서 카테고리마다 해당 url을 node의 get과 연결해야 하는것인지 아니면 앞단에서 직접 URL 접근을 막을 수 있는 방법이 있는지 궁금합니다.
답변 7
1
일단 클라이언트만으로는 접근하는걸 막을 방법은 없고요. 리다이렉트라는 개념도 없습니다. history.replace로 페이지 바꾸는 것을 리다이렉트라고 표현한 것이고요. 접근한 후에 이전페이지에서 넘어왔는지 첫방문인지 판단한 후 돌려보내야하는데 판단의 기준으로 데이터가 필요한 것입니다.
1
일반 리액트에서는 useEffect 부분에서 돌려보내야 합니다. 그런데 돌려보낼때 첫 방문인지 검사해야 하는데 이런건 리덕스같은 곳에 데이터를 갖고 있어야 할 것 같네요.
0
0
네 말씀하신 부분이 페이지가 처음 마운트될때 redirect를 해야하기에 useEffect로 URL 직접 접근을 막을 수 있는 리덕스 데이터가 필요하다는 것이군요?
죄송하지만 그렇다면 순차적으로 페이지들을 history.push('url')해서 넘기고 있는데 직전 데이터들이 리덕스 상태값에서 비워져있는 상태라면 리다이렉트를 하는 방법도 나쁘지 않은 방법이 될수 있는건가요?
0
0
getServerSideProps에서 돌려보낼 수 있습니다.
export async function getServerSideProps({ req, res, params }) {
if (!req.headers.referer) {
res.statusCode = 302
res.setHeader('Location', `/<link>`) // Replace <link> with your url link
res.end();
}
return {props: {}}
}
0
설명이 잘 될진 모르겠지만...
현재 이런식으로 되어있고 ducks패턴으로 작업하여서 각 container마다 로그인한 상태인지 확인하는 코드들이 있습니다.
http://localhost:3000/host/make를 거치지 않고 http://localhost:3000/host/make/title를 바로 가면 리다이렉트로
http://localhost:3000/host/make로 보내고 싶습니다.