사용자 로그인시 DB에 토큰이 존재하면 새로 생성된 토큰으로 변경하는 코드를 작성했다
토큰 테이블은 아래와 같이 생성되어 있다
JPA를 이용하여 코드를 작성하는 과정에서 Dead code Java(536871061)
가 발생했다
작성한 코드는 아래와 같다
@PostMapping(value = "/login.json")
public Map<String, Object> loginPOST(@RequestBody Member member) {
Map<String, Object> map = new HashMap<>();
try {
// 권한정보 변경을 위한 문자배열
String[] strRole = { member.getRole() };
// 문자배열을 Collection타입으로 변환
Collection<GrantedAuthority> role = AuthorityUtils.createAuthorityList(strRole);
// 매니저를 이용한 인증, userdetailservice와 같은 기능
UsernamePasswordAuthenticationToken token1 = new UsernamePasswordAuthenticationToken(member.getUserid(),
member.getUserpw(), role);
// userdetailservice를 사용하지 못하니 같은 기능의 authenticationManager 사용
// = DB에 저장된 회원정보와 비교
authenticationManager.authenticate(token1);
// 로그인 한 사용자의 토큰 생성
String token = JwtUtil.generateToken(member.getUserid(), member.getRole());
// TOKEN UPSERT를 위한 조회
Token searchToken = tRepository.findTokenByMember_userid(member.getUserid());
System.out.println("조회된 token ========> "+ searchToken.getToken());
if(searchToken != null){ // 토큰이 있는경우
searchToken.setToken(token);
tRepository.save(searchToken);
map.put("result", searchToken.getToken());
}
else{
// 토큰 entity에 정보저장후 리턴
Token obj = new Token();
obj.setToken(token);
obj.setMember(member);
obj.setRole(member.getRole());
tRepository.save(obj);
map.put("result", token);
}
map.put("status", 200);
} catch (Exception e) {
map.put("status", -1);
map.put("result", e.getMessage());
}
return map;
Dead code
가 발생한 이유searchToken.getToken()
을 출력한 시점에 searchToken
이 null이 아니라고 확정이 된다.
else문에서 null이 아닌경우를 처리하려고 했기 때문에 Dead code
가 발생되었다.
else문은 실행될 일이 없는 코드이기 때문에 if - else
구문이 아닌 if
만 사용하여 처리해주었다.
// 완료 - 로그인
@PostMapping(value = "/login.json")
public Map<String, Object> loginPOST(@RequestBody Member member) {
Map<String, Object> map = new HashMap<>();
try {
// 권한정보 변경을 위한 문자배열
String[] strRole = { member.getRole() };
// 문자배열을 Collection타입으로 변환
Collection<GrantedAuthority> role = AuthorityUtils.createAuthorityList(strRole);
// 매니저를 이용한 인증, userdetailservice와 같은 기능
UsernamePasswordAuthenticationToken token1 = new UsernamePasswordAuthenticationToken(member.getUserid(),
member.getUserpw(), role);
// userdetailservice를 사용하지 못하니 같은 기능의 authenticationManager 사용
// = DB에 저장된 회원정보와 비교
authenticationManager.authenticate(token1);
// 로그인 한 사용자의 토큰 생성
String token = JwtUtil.generateToken(member.getUserid(), member.getRole());
// TOKEN UPSERT를 위한 조회
Token searchToken = tRepository.findTokenByMember_userid(member.getUserid());
if (searchToken != null) { // 토큰이 있는경우
// 기존토큰 삭제
tRepository.delete(searchToken);
System.out.println("기존토큰 삭제됨");
}
// 토큰 생성 후 DB 저장
Token obj = new Token();
obj.setToken(token);
obj.setMember(member);
obj.setRole(member.getRole());
tRepository.save(obj);
map.put("result", token);
map.put("status", 200);
} catch (Exception e) {
map.put("status", -1);
map.put("result", e.getMessage());
}
return map;
}