Logged In User #01
์ด๋ฒ์๋ ์ ์ ๋ฅผ ๊ธฐ์ตํ๋๊ฑธ ๋ง๋ค์ด ๋ณผ๊ฑฐ๋ค.
๋๊ฐ ๋ก๊ทธ์ธ ํ๋์ง ๋ง์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ์ค ๊ธฐ์ตํ๋ค๋ ๋ง์ด ์ ์ด์ธ๋ฆด์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
์๋ํ๋ฉด ๊ธฐ์ตํ๋ค๋๊ฑด ์ค๋ ๋ญ๊ฐ๋ฅผ ๋ฐฐ์ฐ๊ณ ์ ์ ๋ค์๋ค๊ณ ํด๋ณธ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ผ์ด๋๋ฉด ๋ฐฐ์ด๊ฑธ ๊ธฐ์ตํ๊ณ ์์๊ฑฐ๋ค. ํธ๋ํฐ ๋ฒํธ๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ฏ์ด
์ ์ ๋ค๊ณ ๋ค์ ์ผ์ด๋๋๋ผ๋ ํธ๋ํฐ ๋ฒํธ์ ๊ธฐ์ตํ๊ณ ์๋ ๊ฒ์ฒ๋ผ
๊ทธ๋ฐ๋ฐ ์๋ฒ๋ ์ด๋ ๊ฒ ํ ์ ์๋ค. ์๋ฒํํ
๋ ๋ชจ๋ ์์ฒญ์ผ๋ก ๋ถํฐ id
๊ฐ ํ์ํ๋ค.
์ด๊ฑธ ๋ค ๊ธฐ์ตํ ์๋ ์์ผ๋๊น ์๋ฅผ ๋ค์ด, ๋๊ตฐ๊ฐ๊ฐ "๋์ ํธ๋ํฐ ๋ฒํธ๋ ๋ญ๋?" ๋ผ๊ณ ๋ฌผ์ด๋ดค๋๋ฐ
๋๊ตฐ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด id
์นด๋๋ฅผ ๋ฐ์์ "์ด๊ฒ ๋์ ํธ๋ํฐ ๋ฒํธ๊ตฌ๋!" ๋ผ๊ณ ์์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ ๋ค์๋ค ๋ค์ ์ผ์ด๋์ ํธ๋ํฐ ๋ฒํธ๊ฐ ๋ญ๋๊ณ ๋ค์ ๋ฌผ์ด๋ณด๋ฉด
"๋๊ฐ ๋๊ตฐ๋ฐ?" ํ๊ณ ๋ฌผ์ด๋ณด๊ณ id
์นด๋๋ฅผ ๋ฐ์์ id
์นด๋๊ฐ ์์ผ๋ฉด ํธ๋ํฐ ๋ฒํธ ์๋ ค์ค๋
๋๊ฒ ๋ค ํ๊ณ ์ ์ ์๋๊ฑฐ๋ค. ๊ทธ๋ฌ๋๊น ์ด๋ค ์ฌ๋๋ค๋ ๊ธฐ์ตํ์ง ์๋ ๊ฑฐ๋ค.
id
์ ๋ณด๋ฅผ ๊ฐ์ง DB
๋ฅผ ๋ง๋ค๊ณ ๋๊ตฐ๊ฐ id
์นด๋๋ฅผ ๋ค๊ณ ์ฐพ์์ค๋ฉด ๊ทธ๋ ํ์ธํ๋๊ฑฐ๋ค.
๊ทธ๋ฌ๋๊น ๊ธฐ์ตํ๋๊ฑฐ๋ผ๊ณ ๋งํ๊ธฐ๋ ์ด๋ ต๋ค. 1์ด๋ง๋ค ๊น๋จน๋ ์ฌ๋์ด๋ ๋ํํ๋๊ฑฐ๋ ๋๊ฐ์๊ฑฐ๋ค.
๊ทธ๊ฒ ๋ฐ๋ก ์๋ฒ์ด๋ค.
์ด์ ์ฌ๊ธธ ๋ณด๋ฉด ์ธ์
DB
๊ฐ ์๋๋ฐ
_LJRIAPlxO7fUVAYnBkjUDGQgdzvap0E: {
cookie: { originalMaxAge: null, expires: null, httpOnly: true, path: '/' }
},
๋ญ ํ ๊ฑฐ๋๋ฉด userController
๋ก ๊ฐ์
์ ์ ๊ฐ ๋ก๊ทธ์ธํ๋ฉด ๊ทธ ์ ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ธ์ ์ ๋ด์๊ฑฐ๋ค.
const ok = await bcrypt.compare(password, user.password);
if (!ok) {
return res.status(400).render("login", {
pageTitle,
errorMessage: "Wrong password",
});
}
req.session.loggedIn = true;
req.session.user = user;
return res.redirect("/");
};
๊ทธ๋ฆฌ๊ณ ๊ฐ ์ ์ ๋ง๋ค ์๋ก ๋ค๋ฅธ req.session object
๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋๊ฑธ ๊ธฐ์ตํ๋ค.
์๋ํ๋ฉด ๋ชจ๋ ์๋ก ๋ค๋ฅธ id
๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋๊น ๋ง์ด๋ค. req.session.loggedIn = true
๋ผ๊ณ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ req.session.user
๋ก๋ DB
์์ ์ฐพ์ user
๋ฅผ ์ธ๊ฑฐ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ธ์ ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋๊ฑฐ๋ค.
๊ฐ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์๋ก ๋ค๋ฅธ ์ธ์ ์ ๊ฐ์ง๊ณ ์๋ค๋๊ฑธ ๊ผญ ๊ธฐ์ตํ๋ค.
๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋๊ฐ์ ์ธ์ ์ ๊ฐ์ง๊ณ ์๋๊ฒ ์๋๋ค. ๋ค ๋ค๋ฅด๋ค.
์ด์ ์ธ์
์ loggedIn
์ true
๋ก ์ถ๊ฐํ๊ณ user
๋ฅผ ์ธ์
์ ์ ์ฅํ๊ณ ์๋ค.
์๋ก๊ณ ์นจํ๊ณ login
์ผ๋ก ๊ฐ๋ณธ๋ค. ์ธ์
DB
๋ฅผ ํ๋ฒ ํ์ธํ๊ณ ๋ก๊ทธ์ธ์ ํด๋ณธ๋ค.
๋ณด๋ค์ํผ template
์๋ ์๋ฌด ๋ณํ๊ฐ ์์ง๋ง ์ธ์
DB
๋ฅผ ํ์ธํด๋ณด๋ฉด ์ฟ ํค id
์ธ ์ธ์
id
๊ฐ ์๋๊ฑธ ๋ณผ์ ์๋ค. loggedIn
์ด true
์ด๊ณ user
๋ ์๋ค.
์ด์ ๋ค์ Home
์ผ๋ก ๊ฐ์ Search
๋ก ๊ฐ๋ณธ๋ค. Upload Video
๋ก๋ ๊ฐ๋ค๊ฐ
๋ค์ Home
์ผ๋ก ๊ฐ๋ณธ๋ค. ๋ Search
๋ก ๊ฐ๋ณด๊ณ , ์ด๋ ๊ฒ ํ๋ฉด์ ์ด๋ํ ๋๋ง๋ค
๋ฐฑ์๋์์ ๋ด๊ฐ ๋ก๊ทธ์ธ ํ๋ค๋๊ฑธ ์๊ณ ์๋ค. ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ก๋ ํด๋ณธ๋ค.
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ Search
๋ก ๊ฐ๋ณด๋ฉด ์ด์ 2๊ฐ์ ์ธ์
์ด ์๊ธด๊ฑธ ๋ณผ์ ์๋ค.
๋ก๊ทธ์ธํ ์ ์ ๊ฐ ํ๋ ์๊ณ ๋ก๊ทธ์ธ ํ์ง ์์ ์ ์ ๋ ํ๋ ์๋ค.
์ด๋ ๊ฒ ๋๊ฐ ๋ก๊ทธ์ธํ๋์ง ์ํ๋์ง ์์ ์๋๊ฑฐ๋ค.
์ด์ ์ด๊ฑฐ์ ๋ง๊ฒ template
์ ์์ ํด ๋ณผ๊ฑฐ๋ค. ๋ง์ฝ session.loggedIn
์ด true
๋ผ๋ฉด
Join
๊ณผ Login
์ ๊ฐ๋ฆด๊ฑฐ๋ค. ๋์ Logout
์ ๋ณด์ฌ์ฃผ๊ฒ ๋ง๋ค๊ฑฐ๋ค.
๊ทธ๋ฌ๋ฉด ํ ํ๋ฆฟ์์ ์ธ์ ์ ์ ๊ทผํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
base.pug
์์
body
header
h1=pageTitle
nav
ul
li
a(href="/") Home
if !req.session.loggedIn
li
a(href="/join") Join
li
a(href="/login") Login
li
a(href="/search") Search
li
a(href="/videos/upload") Upload Video
๋ง์ฝ loggedIn
์ด ์๋๋ผ๋ฉด Join
๊ณผ Login
์ ๋ณด๊ฒ ๋ ๊ฑฐ๋ค.
base.pug
์์ req.session.loggedIn
์ ์ ๊ทผํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
์๋ก๊ทธ์นจํด๋ณด๋ฉด ... ์๋๋ค. ๊ด์ฐฎ๋ค ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ๋๋ค.
๋๊ฐ user
์ธ์ง ์์ ์๊ธฐ์ ์ฌ๊ธฐ ์๋ ์ธ์
DB
์์ ๋ง์ด๋ค.
user: {
_id: '625942ace3564e09811a5f21',
email: 'pkpanda@naver.com',
username: 'Cyber Lover',
password: '$2b$05$WMO/VH/yctvvPJST0SyLq.QRQfSNeLJ5zAJPFfRMwLgg5ZFq1KtBm',
name: 'Mercury',
location: 'NYC',
__v: 0
}
๊ทธ๋ฌ๋๊น ๋๊ฐ ์ ์ ์ธ์ง๋ ์์ ์๋๋ฐ ๊ทธ ์ ๋ณด๋ฅผ pug
ํ
ํ๋ฆฟ๊ณผ ๊ณต์ ํ์ง ๋ชปํ๋ ๊ฑฐ๋ค.
์ด๊ฑธ ๊ณต์ ํ ์ ์์ด์ผ ํ๋ค. ์ด๊ฑด ๋ค์ ํํธ์์ ํด๋ณด๊ธฐ๋ก ํ๋ค.
์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง์ ๋ํด ์ ์ดํดํ๊ณ ๋์ด๊ฐ๋๊ฒ ์ค์ํ๋ค.
req.session object
์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ค. ์ ์ ๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋์ง ์ํ๋์ง
์๊ด์์ด ๋ง์ด๋ค. ์ด๋ค ์ ๋ณด๋ ์ง ์ถ๊ฐ ํ ์ ์๋๋ฐ loggedIn
๊ณผ user
๋ผ๋ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ์ ์ด ๋๊ฐ์ง๊ฐ ์๋๋ฐ ํ๋๋ ๋ก๊ทธ์ธํ ์ธ์ ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ๋ก๊ทธ์ธํ์ง ์์ ์ธ์ ์ด๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Logged In User #01), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@0_cyberlover_0/Logged-In-User-01์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค