728x90

Token 만들기

우선 token 을 만들기 위해서는 javascript 에서 쓸수있는 json web token 이 필요합니다.

 

 

npm i jsonwebtoken
npm i @types/jsonwebtoken --only-dev

 

// sign with RSA SHA256
var privateKey = fs.readFileSync('private.key');
var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'});

json web token 의 예제입니다. privateKey 에 제가 설정한 token key 가 들어가면 됩니다.

 

이를 위해 app module 을 수정할게요

 

 

...
imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: process.env.NODE_ENV === 'dev' ? '.dev.env' : '.env.test',
      // production 환경일 때는 configModule이 환경변수 파일을 무시합니다.
      ignoreEnvFile: process.env.NODE_ENV === 'prod',
      validationSchema: Joi.object({
        NODE_ENV: Joi.string().valid('dev', 'prod').required(),
        DB_HOST: Joi.string().required(),
        DB_USERNAME: Joi.string().required(),
        DB_PASSWORD: Joi.string().required(),
        DB_NAME: Joi.string().required(),
        SECRET_KEY: Joi.string().required(),
      }),
    }),
    ...
 ...

 

 

맨 마지막줄에 SECRET_KEY 를 추가하고 .env 파일에 설정합니다.

 

 

.dev.env

...
SECRET_KEY=12345

 

 

secret key 를 자동으로 생성해주는 사이트 입니다. gen secret key

token을 사용자에게 지정해주게 되면 사용자는 자기 token 안에 뭐가 들어있는지 볼수 있게 됩니다. 그래서 중요한 내용은 되도록 넣지 않는게 좋아요

그저 사용자가 누구인지 판별하는 정도의 정보면 좋을거 같네요

그렇다면 privateKey 를 이용해서 token을 지정해주는 목적은 바로 우리가 사용자가 token을 수정했는지를 확인할 수 있기 때문입니다.

그런 다음 app module 에서 설정한 ConfigModule 을 users.module.ts 에서 사용하기 위해 ConfigService 를 추가합니다.

 

 

 

 

nestjs의 장점이라고도 볼수 있겠네요
app module 에서 ConfigModule의 forRoot 로 설정을하고 다른 module 에서 ConfigService 로 설정된 것들을 불러 쓸수 있습니다.

 

 

 

 

users.service 로 가서 constructor 에 config 를 생성합니다.

 

 

 

 

const token = jwt.sign({ id: user.id }, this.config.get('SECRET_KEY'));
return { ok: true, token };

 

 

그리고 this.config.get 으로 SECRET_KEY 를 불러 쓸수 있습니다.

 

정상적으로 토큰이 잘 출력되었습니다.

 

아래 깃허브에서 전체적인 코드를 참고하실수 있습니다.

 

github

 

728x90

'Side > uber-eats' 카테고리의 다른 글

라이브러리 없이 만드는 JWT - 2  (0) 2021.06.06
Nestjs , Typeorm 에서 Hasing passwords  (0) 2021.06.05
Nestjs - User model  (0) 2021.06.01
Nestjs - Typeorm Repository 사용하기  (0) 2021.05.31
TypeORM setup 과 Nestjs Config  (0) 2021.05.23