개발공부/TIL

[국비지원] 71일차

jnnjnn 2024. 5. 24. 17:46

 

오늘은 인증과 권한 자격을 추가하여 멤버와 게시물 CRUD를 수정하였습니다.

 

UPDATE가 신경쓸 부분이 많았는데 , 회원 정보를 수정하면 NAVBAR에 있는 회원 정보가 업데이트 되도록 service에서 회원 정보 수정 후 수정된 정보를 입력하여 토큰을 재발급하고, 리액트에서 Context로 주입하는 부분이 특히 어려웠습니다

 

public Map<String, Object> modify(Member member, Authentication authentication) {
       //업데이트 코드
        mapper.update(member);

        String token = "";

		// Authentication에서 Principal 가져오고 Jwt로 변환
        Jwt jwt = (Jwt) authentication.getPrincipal();
        // Jwt에서 claim 정보 가져오기
        Map<String, Object> claims = jwt.getClaims();
        // JWtClaimsSet.Builder 생성
        JwtClaimsSet.Builder jwtClaimsSetBuilder = JwtClaimsSet.builder();
        // jwtClaimsSetBuilder에 값 넣기
        claims.forEach(jwtClaimsSetBuilder::claim);
        // claims.forEach((name, value) -> jwtClaimsSetBuilder.claim(name, value));
        // "nickName" claim 정보 갱신하기
        jwtClaimsSetBuilder.claim("nickName", member.getNickName());

		// JwtClaimsSet 객체 생성하기
        JwtClaimsSet jwtClaimsSet = jwtClaimsSetBuilder.build();
        // JwtClaimsSet 객체 encoding해서 토큰 값으로 받기
        token = jwtEncoder.encode(JwtEncoderParameters.from(jwtClaimsSet)).getTokenValue();

		// 토큰 저장한 맵 객체 반환하기
        return Map.of("token", token);
    }

 

토큰 재발급 하는 로직을 정리해보았습니다