• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

post method 사용시 /join 루트로 들어가면 어쩨서 /auth/join 으로 들어가게 되는 건가요?

18.11.02 00:37 작성 조회수 157

0

  1. auth.js 부분에서, router.post 부분에 대해 궁금한 게 있습니다.

이하의 코드에서 '/join' 어드레스와 post 메서드를 써서 접근을 했는데, 설명에는 이렇게 접근하면

auth/join 으로 간다고 하셨습니다. 어째서 인가요?

Get을 사용시에는 /join 했을 경우 /join으로 가는데, 이 경우에는 어떻게 알고 auth/join 으로 보내는 건가요? urlparser가 알아서 하는 건가요?

router.post('/join', isNotLoggedIn, async (req, res, next)=>{

const {email, nick, password} = req.body;

router.post 부분 코드 는 아래와 같습니다.

router.post('/join', isNotLoggedIn, async (req, res, next)=>{

const {email, nick, password} = req.body;

try{

const exUser = await User.find({where:{email}});

if(exUser){

req.flash('joinError', '이미 가입된 이메일입니다.');

return res.redirect('/join');

}

console.time('암호화시간');

const hash = await bcryptjs.hash(password, 12);

console.timeEnd('암호화시간');

await User.create({

email,

nick,

password: hash,

});

return res.redirect('/');

}catch(error){

}

})

  1. 또한, router.post('./login' ~ 부분을 보면, (req, res, next) 등이 쓰이고, 그이후 다시 쓰이는데요, 동일한 변수들이 다시 붙는데요, 왜 인가요?
  2. 클로져에서 이런 방식을 종종 보는데, 여기서는 아닌것 같고.

    시작하자 마자, 변수를 바로 입력해서 바로 실행하게 하기 위함인가요?

코드는 아래와 같습니다.

router.post('/login', isNotLoggedIn, (req, res, next)=>{

passport.authenticate('local', (authError, user, info)=>{ //erro, success, failure

if(authError){

console.error(authError);

return next(authError);

}

if(!user){

req.flash('loginError', info.message);

return res.redirect('/');

}

return req.login(user, (loginError)=>{

if(loginError){

console.error(loginError);

return next(loginError);

}

})

})(req, res, next); // ******************** <<=== 이부분 입니다.

})

답변 3

·

답변을 작성해보세요.

0

ryu sin님의 프로필

ryu sin

질문자

2018.11.02

답변 감사합니다. 책도 있고 동영상 강좌도 보고 있습니다 ㅎㅎ.

책이 무거워서, 이북으로 다시구 입하게 될거 같습니다 ㅜ.ㅜ ;

0

아 순간 책 질문으로 착각했네요. 11강 cors 강좌 보시면 cors에서 (req, res, next) 붙이는 이유 설명하는데 같은 이유라고 보시면 됩니다. 미들웨어를 커스터마이징하기 위함입니다.

0

app.use('/auth', authRouter')에서 /auth와 router.get('/join')이 합쳐져 /auth/join이 됩니다.

(req, res, next)부분은 426쪽 보시면 설명되어 있습니다~