๋ฏธ๋ค์จ์ด ํจ์๋ ์์ฒญ ์ค๋ธ์ ํธ(req), ์๋ต ์ค๋ธ์ ํธ (res), ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ-์๋ต ์ฃผ๊ธฐ ์ค ๊ทธ ๋ค์์ ๋ฏธ๋ค์จ์ดํจ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๊ฐ๋ ํจ์์ ๋๋ค. ๊ทธ ๋ค์์ ๋ฏธ๋ค์จ์ด ํจ์๋ ์ผ๋ฐ์ ์ผ๋ก next๋ผ๋ ์ด๋ฆ์ ๋ณ์๋ก ํ์๋ฉ๋๋ค. - express ๊ณต์ ์ฌ์ดํธ -
Node.JS์ Express JS๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ฏธ๋ค์จ์ด๋ผ๋ ์ฉ์ด๋ฅผ ๋ง์ด ์ ํ๊ฒ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฏธ๋ค์จ์ด ๋ ๊ณผ์ฐ ๋ฌด์์ผ๊น?
๋ฏธ๋ค์จ์ด ์ฆ, ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ๊ฐ์ ๋์์ด๋ ๊ตฌ์ญ ๋ด์์ ์์๊ณผ ๋ ์ฌ์ด์ ์ค๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ํจ์์ด๋ค. Express JS ์์์ ์ฌ์ฉ์ ์๋ก ๋ค์๋ฉด, ์์ฒญ์ ๋ํ ์๋ต์ฌ์ด์์ ์ค๊ฐ์ค๊ฐ ๋ค์ํ ์ผ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
์๋ฅผ ๋ค์ด, ๋ผ์ฐํ
์ ๊ตฌ์ฑํ ๋ ์ด๋ค url์ ๊ผญ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด ๋์ด์๋ ์ํ์ฌ์ผ๋ง ํด๋น ๋ผ์ฐํ
์ ๋ณผ์ ์๊ฒ๋ ํ๊ณ ์ถ์ ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด
function loginRequired(req,res,next){
if(login != true){
res.redirect(๋ก๊ทธ์ธ ํ์ด์ง๋ก)
}else{
next();
}
};
router.get("/", loginRequired, (req, res) => {/*
/admin์ด๋ํ loginRequired์์ login์ด ture์ผ ์์๋ง responseํด์ฃผ๊ธฐ.*/
res.send("admin page");
});
์ด๋ฐ์์ ์ฝ๋๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ์ ์คํฌ๋ฆฝํธ์์ loginRequired๋ผ๋ ์ ์ธ์ ํจ์๋ฅผ ๋ง๋ค์ด์ค ํ ์๋์
๋ผ์ฐํ
์ฃผ์ ๋ค์ ๊ฐ์ผ๋ก ๋๊ฒจ์คฌ๋ค.
์ด๋ฅผ ํตํด "/"ํ์ด์ง๋ก ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ ์ ๋ค์ ์ธ์์ ์๋ loginRequired๋ผ๋ ๋ฏธ๋ค์จ์ด๊ฐ ์คํ๋๊ณ , login ์ํ๊ฐ true์ด๋ฉด next() ๋ฉ์๋๋ฅผ ํตํด ํด๋น ํ์ด์ง๋ฅผ ์๋ตํด์ฃผ๊ณ , false๋ผ๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๊ฒ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Express์ ๋ฏธ๋ค์จ์ดํจ์๋ ์์ฒญ ๊ฐ์ฒด(request), ์๋ต ๊ฐ์ฒด (response) ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฏธ๋ค์จ์ด ํจ์๋ฅผ ์คํํ๋ next ํจ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ทธ๋ ๊ธฐ์ ์์ ์์ ์ if๋ฌธ์์ else ์ฆ login์ํ๊ฐ true์ผ์ next() ๋ฉ์๋๊ฐ ์คํ๋๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ admin page๋ฅผ ์๋ตํด์ฃผ๊ฒ ๋๋๊ฒ์ด๋ค.
๋ํ ๋ฏธ๋ค์จ์ด๋ ์์ฐจ์ ์ผ๋ก ์คํ๋๊ธฐ์ ์์๊ฐ ๊ต์ฅํ ์ค์ํ๋ฐ,
์๋จ ๋ถ๋ถ์ ๋ณด๋ฉด First์ Second๋ฅผ ์ฝ์๋ก ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์ ์ธ์ ํจ์ ๋ง๋ค์ด ๋์๋ค ์๋จ์ ๋๊ฐ์ง ํจ์๊ฐ get ์์ฒญ ์ ๋ฏธ๋ค์จ์ด๋ก ์คํ๋๊ฒ ๋ ํด๋์๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด First, Second ์์ผ๋ก ์ ์๋ํ๊ฒ์ ๋ณผ์์๋ค.
๋ง์ง๋ง์ผ๋ก express๋ฅผ ์ ํ๊ฒ๋๋ฉด์ ๋ฏธ๋ค์จ์ด ํจ์๋ฅผ ๋ปํ๋ app.use๋ก ์์๋๋ ์ฝ๋๋ฅผ ๋ง์ด ๋ณด๊ฒ๋๋๋ฐ,
์ด๋ ๊ฒฐ๊ตญ ์์ ์ค๋ช
์ฒ๋ผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฌ๋๋ง๋ค ์์๋๋ก ๋ฏธ๋ค์จ์ด๋ฅผ ๊ฑฐ์น๋ฉฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ํ๊ฒ๋๋ค.
๋ํ Router ๊ฐ์ฒด๋ฅผ ํตํด ๋ฉ์ธ ํ์ผ์์ ๋ถ๋ฆฌ๋ ๋ผ์ฐํฐ๋ํ (์ด๋ ๋ค์์ ์์ธํ ๋ค๋ค๋ณผ ์์ ์ด๋ค.) app.use, ์ฆ ๋ฏธ๋ค์จ์ด๋ก ์ฒ๋ฆฌ๋๋๊ฒ์ด๋ "Express ๋ ์ฌ์ค์ ๋ฏธ๋ค์จ์ด ํจ์์ ์ฐ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค" ๋ ๋ง์ด ๋์ฑ ์๋ฟ๋๊ฒ ๊ฐ๋ค.