인프런 커뮤니티 질문&답변

반가우면반갑다고해님의 프로필 이미지
반가우면반갑다고해

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

노드 리액트 기초 강의 #33 인증 체크 (1)

질문있어요!

작성

·

132

1

서버쪽에서 /api/users/auth 경로로 온것을 처리하는 코드에서

isAdmin: req.user.role === 0 ? false : true,
isAuth: true,

isAdmin은 User모델에 기본적으로 디폴트 값이 있어서 괜찮지만 isAuth는 기본값이 안정해져있는데 false가 나올수가있나요? 성공했을때만 true가 저장되고 성공안할시 false은 안나오고 그냥 아예 없는것아닌가요? (null?)

질문 2:

hoc에 대한 질문입니다.

App.js에서 옵션으로 null,true,false를 주셧는데 

이 값은 어디서 가져오는건가요? 그냥 임의적으로 제가 여기페이지는 너만 가능해! 하면 true를 주는걸까요??

감사합니다!

답변 1

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요   열심히 하시는 모습 보기 너무 좋습니다 ^^ 

질문 1 답변 ) 

router.get("/auth", auth, (req, res) => {
res.status(200).json({
_id: req.user._id,
isAdmin: req.user.role === 0 ? false : true,
isAuth: true,
email: req.user.email,
name: req.user.name,
lastname: req.user.lastname,
role: req.user.role,
image: req.user.image,
company: req.user.company
});
});

여기 보시면 auth라는 middleware 보이시죠 ? 

auth 라는 미들웨어를 통과해야지만 res.status(200)을 보낼수가 있답니다 ! 

auth middleware에서 막히면  이미  막혔을떄  isAuth: false라고 정의가 되는거죠 ~ ! 

질문 2 답변 )

저기서 null, true, false로 값을 줄수 있는이유는 

/hoc/auth.js 에서 

dispatch(auth()).then(response => {
console.log(response)
//로그인 하지 않은 상태
if (!response.payload.isAuth) {
if (option) {
props.history.push('/login')
}
} else {
//로그인 한 상태
if (adminRoute && !response.payload.isAdmin) {
props.history.push('/')
} else {
if (option === false)
props.history.push('/')
}
}
})

이 부분에서  option 부분이  null 인지 true인지 false 인지에 따라 다른 액션을 취하기에 저렇게 넣어줄수있습니다 ~ ! 

감사합니다 ~ ! 

반가우면반갑다고해님의 프로필 이미지
반가우면반갑다고해

작성한 질문수

질문하기