5 ~ 8 ์ดํ ์ฌ์ฉ์ ID, ๋น๋ฐ๋ฒํธ๊ฐ ์๋ ์ฟ ํค์ ๋ด๊ธด ์ธ์ ID๋ก ์ฌ์ฉ์๋ฅผ ํ์ธํ๊ณ ๋์ํ๋ค.
!! HTTPS ํ๋ฆ ์ค 7 ~ 8 ๋ถ๋ถ์ด๋ค !!
session({
secret: '@codestates',
resave: false, // ์ธ์
์ ํญ์ ์ ์ฅํ ์ง ์ค์
saveUninitialized: true, // ์ธ์
์ด ์ ์ฅ๋๊ธฐ ์ uninitialized ์ํ๋ก ์ ์ฅ
cookie: {
domain: 'localhost', // ์ฟ ํค๋ฅผ ๋ณด๋ผ ์ฃผ์
path: '/', // URL ๊ฒฝ๋ก
maxAge: 24 * 6 * 60 * 10000, // ์ฟ ํค ์ ํจ์๊ฐ
sameSite: 'None', // ์ฟ ํค๋ฅผ ์ ์กํด์ผ ํ ๋ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ๋ฐ๋ฅธ ์ฟ ํค ์ ์ก ์ฌ๋ถ๋ฅผ ๊ฒฐ์
// Strict : same-site ์ธ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๋ฅผ ์ ์ก ๊ฐ๋ฅ
// Lax : GET ๋ฉ์๋์ธ ๊ฒฝ์ฐ์๋ง ์ฟ ํค ์ ์ก ๊ฐ๋ฅ
// None : ๋ญ๋ ์ฟ ํค ์ ์ก ๊ฐ๋ฅ -> secure: true ํ์
httpOnly: true, // ํด๋ผ์ด์ธํธ ์คํฌ๋ฆฝํธ๊ฐ ์ฟ ํค๋ฅผ ๋ชป๋ณด๊ฒ ํจ (document.cookie) -> ๋ณด์๊ฐํ
secure: true, // HTTPS์ผ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๋ฅผ ์ ์ก
},
})
cors({
// origin: 'https://localhost:3000',
origin: true,
methods: ['GET', 'POST', 'OPTIONS'],
credentials: true, // ๋ค๋ฅธ ๋๋ฉ์ธ๊ฐ ์๊ฒฉ์ฆ๋ช
(credential, ์ฟ ํค ํฌํจ)์ ์ ์กํ ์ง ์ฌ๋ถ
})
credential์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์
module.exports = {
post: async (req, res) => {
// userInfo๋ ์ ์ ์ ๋ณด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๊ณ , ์๋ฒฝํ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํฉ๋๋ค.
// ๋ง์ฝ userInfo๊ฐ NULL ํน์ ๋น ๊ฐ์ฒด๋ผ๋ฉด ์ ๋ฌ๋ฐ์ ์ ์ ์ ๋ณด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋์ง ํ์ธํด ๋ณด์ธ์
const userInfo = await Users.findOne({
where: { userId: req.body.userId, password: req.body.password },
});
// console.log(userInfo);
if (!userInfo) {
// TODO: ์ ์ ์ ๋ณด๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
res.status(400).send({ message: 'not authorized' });
} else {
// TODO: ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ธ์
๊ฐ์ฒด์ userId๊ฐ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
// HINT: req.session์ ์ฌ์ฉํ์ธ์.
req.session.userId = req.body.userId;
//console.log(req.session);
// TODO: ์ ์ ์ ๋ณด๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
res.status(200).json({ data: userInfo, message: 'ok' };
}
},
};
module.exports = {
post: (req, res) => {
// TODO: ์ธ์
์์ด๋๋ฅผ ํตํด ๊ณ ์ ํ ์ธ์
๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
// ์์ ๋ก๊ทธ์ธ์ ์ธ์
๊ฐ์ฒด์ ์ ์ฅํ๋ ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ, ์ด๋ฏธ ๋ก๊ทธ์ธํ ์ํ๋ก ํ๋จํ ์ ์์ต๋๋ค.
// ์ธ์
๊ฐ์ฒด์ ๋ด๊ธด ๊ฐ์ ์กด์ฌ ์ฌ๋ถ์ ๋ฐ๋ผ ์๋ต์ ๊ตฌํํ์ธ์.
// console.log(req.session);
if (!req.session.userId) {
res.status(400).send("not authorized");
} else {
// TODO: ๋ก๊ทธ์์ ์์ฒญ์ ์ธ์
์ ์ญ์ ํ๋ ๊ณผ์ ์ ํฌํจํด์ผ ํฉ๋๋ค.
req.session.destroy(); // ! session.destroy() ๋ฉ์๋ ์ฌ์ฉ์ ์ธ์
ํ๊ดดํจ
res.json("ok");
}
},
};