티스토리 뷰
-problem
키오스크 기능을 수행하는 웹 어플리케이션을 제작하던 중, 사용자가 주문한 메뉴들의 가격을 찾아서 합산하는 기능을 제작했어야 했다.
여기에서 사용자의 주문을 확인했어야 하는데, 어디까지가 하나의 주문인지 어떻게 아는지에 대한 문제가 발생했다.
-what I tried
일단 jwt의 issuedAt을 사용하고자 했다. 주문을 생성할때 토큰을 생성하고 주문 생성시간과 토큰 생성시간이 같으면 같은 주문이라고 보는 것이다.
다만 아무래도 토큰 생성과 주문 생성이 동시에 일어나지 않아서 미세한 차이가 있어 아예 동일하게 처리할 수 없었다.
-my answer
먼저 주문 생성시간을 찍어줄때 아래와 같이 String으로 처리하고 localDateTime 의 포맷을 yyyy/MM/dd/hh/mm과 같이 설정하였다.
@Column
private String createdAt = LocalDateTime
.now()
.format(DateTimeFormatter.ofPattern("yyyy/MM/dd/hh/mm"));
그리고 토큰 생성할때 claim에다가 시간정보를 동일한 포맷으로 아래처럼 담을 수 있게 하였다.
// 토큰 생성
public String createToken(String phoneNumber, MemberRoleEnum role) {
Date date = new Date();
return BEARER_PREFIX +
Jwts.builder()
.setSubject(phoneNumber)
.claim(AUTHORIZATION_KEY, role)
.claim("time", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd/hh/mm")))
.setExpiration(new Date(date.getTime() + TOKEN_TIME))
.setIssuedAt(date)
.signWith(key, signatureAlgorithm)
.compact();
}
-what I learned!
어떻게 처리할지를 고민하다가 토큰을 이용해서 안에 정보를 담는 아이디어를 떠올릴 수 있었다.
아무래도 이전에 토큰 방식을 사용해 본 것이 도움이 된 듯 하다.
이러나 저러나 기술을 사용해 본 게 도움이 되었다.
앞으로도 여러 기술을 체험해 볼 수 있도록 해야겠다!!
'Learned!' 카테고리의 다른 글
로드밸런싱 (0) | 2023.01.30 |
---|---|
회원가입시 정규표현식으로 유효성 검사 (0) | 2023.01.26 |
NonUniqueResultException: query did not return a unique result: 2 에러 (0) | 2023.01.11 |
게시글 / 댓글 좋아요 기능 제작할 시, 어떻게 카운팅을 할까 (0) | 2023.01.10 |
비밀번호 단방향 암호화 적용시 비밀번호 불일치 문제 (0) | 2023.01.10 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 항해
- 프로그래머스
- hackerrank
- Spring
- jmeter토큰
- 스프링faker
- jmeter쿠키
- Java
- pessimisticlock
- Redis
- Lock
- 동적크롤링
- 대규모더미데이터
- jmeter시나리오
- Redisson
- jmeter부하테스트
- jmeter로그인
- Python
- jmeter테스트
- bankersRounding
- EC2
- 자바
- CorrectnessAndTheLoopInvariant
- index
- jwt
- 부하테스트시나리오
- 인덱스
- jmeter세션
- CheckedException
- 토큰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함