๐ ๋์ ๊ณ๊ธฐ
์ด์ ์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ refresh token
๊ฐ์ redis
๋ฅผ ํตํด ๊ด๋ฆฌํ๊ธฐ๋ก ํ์์ต๋๋ค.
์๋ฒ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋ ์์๋ token
๊ฐ์ ์ ์ง ํด์ฃผ๊ธฐ ์ํจ์ด์๋๋ฐ
Node.js
์๋ฒ์ Redis
๋ฅผ ์ฐ๋ํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ธฐ ์ํด ๊ธ์ ๋จ๊น๋๋ค.
๐ ํ๋ก์ ํธ ์ ์ฉ
1๏ธโฃ ๋ก์ปฌ ํ๊ฒฝ์ redis ์ค์น
๋จผ์ redis
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ ์ค์น ํด์ค ๋ค์ ์คํํฉ๋๋ค. (mac os ๊ธฐ์ค)
$ brew install redis
$ brew services start redis
2๏ธโฃ redis ํจํค์ง ์ค์น
$ npm i redis
3๏ธโฃ redis client ์ ์ํ๊ธฐ
์ด์ express
์ฑ์ redis
๋ฅผ ์ค์ ํ์ฌ ์บ์ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค.
๋จผ์ ์ ์ญ์์ ์ธ์คํด์ค๋ก ์ฌ์ฉํ๊ธฐ ์ํด ํด๋์ค ํํ๋ก redisClient
๋ฅผ ์ ์ ํด์ค๋๋ค.
๋ํ ๊ธฐ์กด์ redis
๋ ์ฝ๋ฐฑ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ์ฝ๊ธฐ ๋๋ฌธ์ Promise
๋ฅผ ํ์ฉํด์
async await
์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค.
// redis/index.js
const redis = require('redis');
class RedisClient {
constructor() {
this.client = redis.createClient(6379);
}
get endpoint() {
return this.client;
}
setValue(key, value) {
this.client.set(key, value);
}
async getValue(key) {
return new Promise((resolve, reject) => {
this.client.get(key, (err, value) => {
if (err) reject(err);
resolve(value);
});
});
}
}
const redisClient = new RedisClient();
module.exports = redisClient;
์ฌ์ฉํ๋ ์ชฝ์์๋ redisClient
๋ฅผ import
ํ ๋ค ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
// ๊ฐ ์ค์ ํ๊ธฐ
redisClient.setValue(user.id, refreshToken);
// ๊ฐ ์กฐํํ๊ธฐ
await redisClient.getValue(userID);
๐ ์ฐธ๊ณ ์๋ฃ
'๐จโ๐ป web.dev > node' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NPM] package-lock.json ์ ๋ฌด์์ผ๊น? (0) | 2022.06.18 |
---|---|
TypeDI ๋ฅผ ํ์ฉํ ์์กด์ฑ ์ฃผ์ (0) | 2022.05.28 |
multer ๋ชจ๋์ ํ์ฉํ ์ด๋ฏธ์ง ํ์ผ ์ ๋ก๋ ํํ ๋ฆฌ์ผ (2) | 2021.03.05 |
Node.js์ MySQL๋ฅผ ์ด์ฉํ ๊ฒ์๊ธ ์์ฑํ๊ธฐ ํํ ๋ฆฌ์ผ (0) | 2021.03.05 |
Sequelize ORM์์ migration ํ์ฉํ๊ธฐ (0) | 2021.03.03 |
๐ฌ ๋๊ธ