Skip to content

[SCG] 손희창 방탈출예약 1-3단계 제출합니다.#229

Open
mikeylili wants to merge 3 commits into
next-step:mainfrom
mikeylili:step/1-3
Open

[SCG] 손희창 방탈출예약 1-3단계 제출합니다.#229
mikeylili wants to merge 3 commits into
next-step:mainfrom
mikeylili:step/1-3

Conversation

@mikeylili

@mikeylili mikeylili commented Jun 23, 2026

Copy link
Copy Markdown

안녕하세요!
노베에서 Spring을 배워가고 있습니다.

현재 ReservationRequest에서 Setter를 안쓰기 위해, 서비스 레이어에서 조건문으로 reservationName을 결정한 뒤 Dao 파라미터로 넘겨주는 방식을 선택했습니다. 혹시 서비스 레이어가 아니라 ReservationRequest 내부에 새로운 형식의 객체를 만드는 메서드를 넣어 기존 예약 데이터에 String newname을 포함한 새로운 객체를 만드는 메서드를 넣는 방식도 괜찮은 구조일지 궁금합니다.

그리고 3단계 구현(Intercept)에서 힌트 코드 구조는

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
        ...
        
        if (member == null || !member.getRole().equals("ADMIN")) {
            response.setStatus(401);
            return false;
        }

        return true;

이거였는데 사실 이 코드에서는 ...에 MemberResponse member = memberService.findMemberByToken(token);가 들어갈 텐데
그러면 findMemberByToken메서드 안에 Member member = memberDao.findByName(name);에서 DB를 다시 조회하게 되는데
사실 토큰을 만들때.claim("role", member.getRole()) 롤도 같이 넣어줘서 힌트 코드 구조를 조금 벗어나게 토큰 자체에서 Jwts를 활용해 Role만 꺼내오는 방식으로 코드를 짜봤습니다.

 try {
            String token = extractToken(cookies);

            String role = Jwts.parserBuilder() //그냥 토큰에서 Role정보를 빼오는 방식 DB 조회를 하지 않고
                    .setSigningKey(Keys.hmacShaKeyFor(SECRET_KEY.getBytes()))
                    .build()
                    .parseClaimsJws(token)
                    .getBody()
                    .get("role", String.class);

            if (role == null || !"ADMIN".equals(role)) {
                response.setStatus(401);
                return false;
            }

            return true;
        } catch (Exception e) {
            response.setStatus(401);
            return false;
        }
        //AdminInterceptor.js 

혹시 힌트 코드 구조가 원래 요구하는건 토큰을 식별자로 해서 DB를 다시 조회해서 Role을 가져오는 방식이 맞을까요?
제 방식에는 문제점이 있을까요?
잘못되거나 개선되어야할 코드가 있다면 꼭 말씀주시면 감사하겠습니다.
수~금까지는 여행일정이 있어서 토요일에 리뷰 확인하고 리뷰 반영하겠습니다!
잘부탁드립니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant