본문 바로가기
node.js

JSON Web Token (JWT) 검증 후 후 필요한 속성을 추출하는 두 가지 접근 방식 비교, 장단점

by momomoo 2024. 5. 23.

어떤 방법이 더 좋은지는 상황과 개인의 선호도에 따라 달라질 수 있습니다. 
각각의 방법에는 장단점이 있습니다. 
아래에서 두 가지 접근 방식의 장단점을 비교해 보겠습니다.

### 방법 1: 두 줄로 분리

```javascript
const decodedToken = jwt.verify(token, 'custom-secret-key');
const userId = decodedToken.userId;
```


#### 장점:
1. **가독성**: 각 단계를 명확하게 분리하여 가독성이 높습니다. 특히, JWT의 디코딩과 속성 접근이 명확하게 나눠져 있습니다.
2. **디버깅 용이성**: 디코딩된 토큰을 변수에 할당하면, 디버깅 시에 중간 값을 쉽게 확인할 수 있습니다. 디코딩된 객체의 다른 속성들도 필요할 경우 접근하기 쉽습니다.

#### 단점:
1. **코드 길이**: 코드가 두 줄로 길어집니다. 특히, 한 줄로 줄일 수 있는 간단한 작업의 경우 불필요하게 길어 보일 수 있습니다.

### 방법 2: 한 줄로 간결하게

```javascript
const userId = jwt.verify(token, 'custom-secret-key').userId;
```



#### 장점:
1. **간결성**: 코드가 한 줄로 더 간결해집니다. 단순한 작업을 수행할 때는 코드가 더 짧아져서 보기 좋습니다.
2. **직관성**: 한 번에 필요한 속성에 접근하므로, 불필요한 변수를 생략할 수 있습니다.

#### 단점:
1. **가독성 감소**: 복잡한 코드나 긴 표현식에서는 가독성이 떨어질 수 있습니다. 모든 작업이 한 줄에 들어가므로, 특히 초보자나 팀원이 이해하기 어려울 수 있습니다.
2. **디버깅 어려움**: 중간 결과를 확인하려면 코드를 수정해야 하므로, 디버깅이 다소 번거로울 수 있습니다.

 

 

 

 

 

 


### 결론 및 권장 사항

#### 1. 코드의 간단함과 복잡성에 따라 선택:
- **간단한 작업**: 한 줄로 작성하는 것이 더 나을 수 있습니다. 간결하고 직관적이기 때문입니다.
- **복잡한 작업**: 단계별로 분리하는 것이 좋습니다. 특히, 디코딩된 토큰의 다른 속성들도 사용해야 하거나, 디버깅을 더 쉽게 하고 싶은 경우에 유리합니다.

#### 2. 팀의 코딩 스타일과 가이드라인에 따르기:
- 팀에서 사용하는 코딩 스타일과 가이드라인에 따라 결정하는 것이 좋습니다. 일관된 스타일을 유지하는 것이 중요합니다.

#### 3. 개인의 선호도:
- 개인적으로 가독성과 디버깅을 중시하는지, 간결성을 중시하는지에 따라 선택할 수 있습니다.

### 예시 코드

다음은 두 방법을 함께 사용한 예제입니다. 이 예제는 상황에 따라 어떤 방법이 더 적합한지 보여줍니다.

 

``javascript
const jwt = require('jsonwebtoken');

const token = jwt.sign({ userId: 12345, role: 'admin' }, 'custom-secret-key');


// 방법 1: 두 줄로 분리

try {
  const decodedToken = jwt.verify(token, 'custom-secret-key');
  const userId = decodedToken.userId;
  console.log('UserId:', userId);
  console.log('Decoded Token:', decodedToken); // 디버깅 용이
} catch (error) {
  console.error('Token verification failed:', error);
}


// 방법 2: 한 줄로 간결하게

try {
  const userId = jwt.verify(token, 'custom-secret-key').userId;
  console.log('UserId:', userId);
} catch (error) {
  console.error('Token verification failed:', error);
}
```



### 최종 결론
상황에 따라 다르지만, 두 방법 모두 각자의 장단점이 있으므로 상황에 맞게 선택하는 것이 좋습니다. 간단한 작업에는 한 줄로 간결하게 작성하고, 복잡하거나 디버깅이 필요한 경우에는 두 줄로 분리하여 작성하는 것이 좋습니다.