AccessLog: 로그인 성공 시 유저 정보 저장
AccessToken: 로그인 성공 시 jwtProvider.createToken(jwtProvider.createTokenPayload(email, TokenType.ACCESS) 에 의해 생성되고, 헤더에 담겨 봔환됨.
RefreshToken: 로그인 성공 시 jwtProvider.createToken(jwtProvider.createTokenPayload(email, TokenType.REFRESH) 에 의해 생성되고, 헤더에 담겨 봔환됨.
TokenBlackList: 로그아웃 시 기존의 토큰을 추가하여 토큰 재활용이 불가능하도록 함
TockenType: ACCESS, REFRESH 를 구분하는 Enum 타입
User: 이용자에 대한 내용
UserRole: 이용자가 관리자 기한을 가지고 있는지 여부를 표기하는 enum 타입
TokenPayload: 토큰에 대한 기본적인 정보를 담는 entity 이를 통하여 캡슐화 성공?
createTokenPayload를 통하여 생성되고, createToken을 통하여 Token을 생성한다.
여기서 추가할 수 있을것 같은 기능
AccessLog: 실패시 저장은 안하나? 일정 횟수 이상 시도 시 잠김?
Entity 스키마에 대한 분석
USER
- id: 사용자 식별을 위한 고유 ID. 자동 생성됨.
- name: 사용자 이름.
- email: 사용자 이메일.
- password: 사용자 비밀번호.
- phone: 사용자 전화번호.
- role: 사용자의 역할 (관리자 여부). Enum 타입.
- regNo: 등록 번호.
- isPersonalInfoVerified: 개인정보 검증 여부.
- accessTokens: 사용자와 연관된 AccessToken 목록.
- refreshTokens: 사용자와 연관된 RefreshToken 목록.
- accessLogs: 사용자와 연관된 AccessLog 목록.
AccessLog
- id: AccessLog 식별을 위한 고유 ID. 자동 생성됨.
- ua: User-Agent 정보. 최대 길이는 512자.
- endpoint: 요청한 엔드포인트.
- ip: 요청한 IP 주소.
- user: AccessLog와 연관된 User. CascadeType.REMOVE를 사용하여 User 삭제 시 연관된 AccessLog도 함께 삭제됨.
AccessToken, RefreshToken
- id: AccessToken 식별을 위한 고유 ID. 자동 생성됨.
- jti: JWT ID, 토큰의 고유 식별자.
- token: AccessToken 문자열.
- expiresAt: 토큰 만료 시간.
- isRevoke: 토큰 취소 여부. 기본값은 false.
- user: AccessToken과 연관된 User. nullable = false로 설정하여 반드시 연관된 User가 있어야 함.
TokenBlackList
- id: TokenBlackList 식별을 위한 고유 ID. 자동 생성됨.
- token: 블랙리스트에 추가된 토큰 문자열.
- jti: JWT ID, 토큰의 고유 식별자.
- tokenType: 토큰 타입 (ACCESS 또는 REFRESH). EnumType.STRING으로 저장됨.
- expiresAt: 토큰 만료 시간.
TokenPayload
- sub: 토큰의 주체, 일반적으로 사용자 식별자 (참고 프로젝트에서는 이메일 사용).
- jti: JWT ID, 토큰의 고유 식별자.
- iat: 토큰 발행 시간.
- expiresAt: 토큰 만료 시간.
'Diary > TIL' 카테고리의 다른 글
2024-05-24) github action으로 CI/CD 구현 (2) | 2024.05.24 |
---|---|
2024-05-22) 로그인 분석 (0) | 2024.05.24 |
2024-05-20) Postgresql, 로그인 (0) | 2024.05.24 |
2024-05-19) CI/CD with github action에 대한 고찰 (0) | 2024.05.24 |
2024-05-16) MYSQL-MSSQL 비교 (0) | 2024.05.24 |