키보드워리어

사용자 유저가 동일하나 권한이 없는 문제 본문

Spring framework/Security

사용자 유저가 동일하나 권한이 없는 문제

꽉 쥔 주먹속에 안경닦이 2023. 5. 21. 23:00
728x90

간단한 PutMapping을 통해서 로그인을 하고 난 이후에 게시글 수정을 하려고 하였다.

 

문제상황 코드

 

@GetMapping("/{boardId}/edit")
public String editForm(@PathVariable Long boardId, Model model,
@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember) {


Board board = boardService.findById(boardId).get();
if (loginMember.getMemberId() != board.getMember().getMemberId()) {
System.out.println("당신의 loginMember.getMemberId "+loginMember.getMemberId()
+"이며, 당신의 board.getMember().getMemberId() " +board.getMember().getMemberId()+" 이므로 서로 일치 하지 않습니다.");
return "redirect:/error/403";
}
model.addAttribute("board", board);
return "editForm";
}

위와 같은 문제가 되었다 ㅜ..

 

그리고 들어간 에러페이지는 403경로인데 404를 뱉어버렸다!

404

에러 해결

다음은 해결방법입니다.

 

여기에서 != 연산자는 객체의 참조 값을 비교하므로String 객체의 경우 동일한 문자열이라 하더라도 객체 참조 값이 다르면 두 객체는 서로 다르다고 판정됩니다. 따라서, 문자열 값을 비교하기 위해서는 equals 메서드를 사용해야 합니다.

 

@GetMapping("/{boardId}/edit")
public String editForm(@PathVariable Long boardId, Model model,
@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember) {


Board board = boardService.findById(boardId).get();
if (!loginMember.getMemberId().equals(board.getMember().getMemberId())) {
//...
return "redirect:/error/403";
}
model.addAttribute("board", board);
return "editForm";
}

그러면 문제가 해결되어 잘 작동합니다.

728x90

'Spring framework > Security' 카테고리의 다른 글

[스프링] 스프링부트 - Security 연결  (0) 2023.04.05