개발공부/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);
}
토큰 재발급 하는 로직을 정리해보았습니다