-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
post method 사용시 /join 루트로 들어가면 어쩨서 /auth/join 으로 들어가게 되는 건가요?
18.11.02 00:37 작성 조회수 157
0
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){
}
})
- 또한, router.post('./login' ~ 부분을 보면, (req, res, next) 등이 쓰이고, 그이후 다시 쓰이는데요, 동일한 변수들이 다시 붙는데요, 왜 인가요?
클로져에서 이런 방식을 종종 보는데, 여기서는 아닌것 같고.
시작하자 마자, 변수를 바로 입력해서 바로 실행하게 하기 위함인가요?
코드는 아래와 같습니다.
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