Skip to content

Commit 5c8f0a9

Browse files
committed
hotfix: 실제 클라이언트의 IP에 접근하도록 수정 & logger 구체화
1 parent 3ce8994 commit 5c8f0a9

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/app.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { NotFoundError } from './exception';
1313
dotenv.config();
1414

1515
const app: Application = express();
16+
// 실제 클라이언트 IP를 알기 위한 trust proxy 설정
17+
app.set('trust proxy', true);
1618
const swaggerSpec = swaggerJSDoc(options);
1719

1820
app.use(cookieParser());

src/controllers/user.controller.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { UserService } from '@/services/user.service';
66
import { InvalidTokenError, TokenExpiredError } from '@/exception/token.exception';
77
import { NotFoundError } from '@/exception';
88

9-
type Token32 = string & { __lengthBrand: 10 };
9+
type Token10 = string & { __lengthBrand: 10 };
1010

1111
export class UserController {
1212
constructor(private userService: UserService) { }
@@ -116,11 +116,11 @@ export class UserController {
116116
) => {
117117
try {
118118
const user = req.user;
119-
const ip = req.ip ?? '';
119+
const ip = typeof req.headers['x-forwarded-for'] === 'string' ? req.headers['x-forwarded-for'].split(',')[0].trim() : req.ip ?? '';
120120
const userAgent = req.headers['user-agent'] || '';
121121

122122
const token = await this.userService.create(user.id, ip, userAgent);
123-
const typedToken = token as Token32;
123+
const typedToken = token as Token10;
124124

125125
const response = new QRLoginTokenResponseDto(
126126
true,
@@ -130,7 +130,7 @@ export class UserController {
130130
);
131131
res.status(200).json(response);
132132
} catch (error) {
133-
logger.error('QR 토큰 생성 실패:', error);
133+
logger.error(`QR 토큰 생성 실패: [userId: ${req.user?.id || 'anonymous'}]`, error);
134134
next(error);
135135
}
136136
};
@@ -164,7 +164,7 @@ export class UserController {
164164

165165
res.redirect('/main');
166166
} catch (error) {
167-
logger.error('QR 토큰 로그인 처리 실패', error);
167+
logger.error(`QR 토큰 로그인 처리 실패: [userId: ${req.user?.id || 'anonymous'}]`, error);
168168
next(error);
169169
}
170170
};

0 commit comments

Comments
 (0)