Skip to content

Commit 53ec923

Browse files
committed
fix: Access Token 인증 과정에서 tokenVersion 제거
#293
1 parent 9674b89 commit 53ec923

File tree

6 files changed

+1
-32
lines changed

6 files changed

+1
-32
lines changed

server/src/auth/auth.controller.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,6 @@ export class AuthController {
103103
// DB에서 refresh token 삭제
104104
await this.authService.removeRefreshToken(user.id);
105105

106-
// 사용자의 token version 증가
107-
await this.authService.increaseTokenVersion(user);
108-
109106
// 쿠키 삭제
110107
this.authService.clearCookie(req.res);
111108
}

server/src/auth/auth.service.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ export class AuthService {
7171
return this.jwtService.sign({
7272
sub: user.id,
7373
email: user.email,
74-
tokenVersion: await this.increaseTokenVersion(user),
7574
});
7675
}
7776

@@ -87,12 +86,6 @@ export class AuthService {
8786
return refreshToken;
8887
}
8988

90-
async increaseTokenVersion(user: User): Promise<number> {
91-
const tokenVersion = user.tokenVersion + 1;
92-
await this.userModel.updateOne({ id: user.id }, { tokenVersion });
93-
return tokenVersion;
94-
}
95-
9689
async login(user: User, res: Response): Promise<UserDto> {
9790
const accessToken = await this.generateAccessToken(user);
9891
const refreshToken = await this.generateRefreshToken(user.id);
Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
import { Injectable, ExecutionContext, UnauthorizedException } from "@nestjs/common";
22
import { AuthGuard } from "@nestjs/passport";
3-
import { AuthService } from "../auth.service";
4-
import { JwtService } from "@nestjs/jwt";
53

64
@Injectable()
75
export class JwtAuthGuard extends AuthGuard("jwt") {
8-
constructor(
9-
private readonly authService: AuthService,
10-
private readonly jwtService: JwtService,
11-
) {
6+
constructor() {
127
super();
138
}
149

@@ -22,14 +17,6 @@ export class JwtAuthGuard extends AuthGuard("jwt") {
2217

2318
const canActivate = (await super.canActivate(context)) as boolean;
2419

25-
// Access Token의 tokenVersion과 사용자의 tokenVersion 일치 여부 확인
26-
const decodedToken = this.jwtService.decode(token) as { sub: string; tokenVersion: number };
27-
const user = await this.authService.findById(decodedToken.sub);
28-
29-
if (!user || user.tokenVersion !== decodedToken.tokenVersion) {
30-
throw new UnauthorizedException("Invalid token version");
31-
}
32-
3320
return canActivate;
3421
}
3522
}

server/src/auth/schemas/user.schema.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ export class User {
1818
@Prop({ required: true })
1919
name: string;
2020

21-
@Prop({ required: true, default: () => 0 })
22-
tokenVersion: number;
23-
2421
@Prop()
2522
refreshToken: string;
2623

server/src/auth/test/auth.controller.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ describe("AuthController", () => {
2525
validateUser: jest.fn(),
2626
getProfile: jest.fn(),
2727
refresh: jest.fn(),
28-
increaseTokenVersion: jest.fn(),
2928
isValidEmail: jest.fn(),
3029
};
3130

server/src/auth/test/auth.service.spec.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ describe("AuthService", () => {
2525
2626
password: "hashedPassword",
2727
name: "Test User",
28-
tokenVersion: 0,
2928
};
3029

3130
const mockUserModel = {
@@ -139,7 +138,6 @@ describe("AuthService", () => {
139138
id: "mockNanoId123",
140139
141140
name: "Test User",
142-
tokenVersion: 0,
143141
};
144142

145143
const mockResponse = {
@@ -152,7 +150,6 @@ describe("AuthService", () => {
152150
expect(jwtService.sign).toHaveBeenCalledWith({
153151
sub: user.id,
154152
email: user.email,
155-
tokenVersion: user.tokenVersion + 1,
156153
});
157154
expect(mockResponse.cookie).toHaveBeenCalledWith("refreshToken", expect.any(String), {
158155
httpOnly: true,
@@ -234,7 +231,6 @@ describe("AuthService", () => {
234231
expect(jwtService.sign).toHaveBeenCalledWith({
235232
sub: mockUser.id,
236233
email: mockUser.email,
237-
tokenVersion: 1,
238234
});
239235
expect(mockResponse.header).toHaveBeenCalledWith("Authorization", `Bearer test-token`);
240236
expect(result).toEqual({

0 commit comments

Comments
 (0)