Node.js์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํด๋ณด๊ณ , ๊ธฐ์กด npm ํจํค์ง์ ํ์ดํ์ ์ถ๊ฐํ๊ฑฐ๋, ์ง์ ํ์ ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ด ์๋ค.
serializeUser์ deserializeUser ์๋ฌ๋๋ ๋ถ๋ค๊ป
passport ๊ด๋ จ ํ์ดํ์ด ๋ ์ ๋ฐ์ดํธ ๋์๋ค์.
types/index.d.ts์ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ
import IUser from '../models/user';passport/index.ts๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊พธ์ธ์.
declare global {
namespace Express {
export interface User extends IUser {}
}
}
passport.serializeUser((user, done) => {๋ค์ผ๋ก req.user๋ req.user!.toJSON() as User ํ ํ์ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฅ req.user ์ฐ์๋ฉด ๋ฉ๋๋ค.
done(null, user.id);
});
passport.deserializeUser<number>(async (id, done) => {
try {
const user = await User.findOne({
where: { id },
});
if (!user) {
return done(new Error('no user'));
}
return done(null, user); // req.user
} catch (err) {
console.error(err);
return done(err);
}
});
{
"ts-node": {
"files": true
},
"compilerOptions": {
"strict": true,
"lib": ["es2020"],
"esModuleInterop": true,
"moduleResolution": "node",
"typeRoots": ["./types"]
}
}