Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 프로그래밍언어
- github
- JShell
- 자바프로그래밍
- 기초코딩
- 프로그래밍
- 프로그래밍기초
- 메소드
- JAVA기초
- Git
- 데이터베이스
- spring
- 자바 스프링
- 이클립스
- 리눅스
- Java
- 제이쉘
- 알고리즘
- 배열
- 초보코딩
- 코딩초보
- 초보코딩탈출
- Elk
- 컴퓨터과학개론
- 스프링
- 자바
- eclips
- 스프링 기초
- 자바기초
- 클래스
Archives
- Today
- Total
키보드워리어
사용자 유저가 동일하나 권한이 없는 문제 본문
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";
}
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를 뱉어버렸다!
에러 해결
다음은 해결방법입니다.
여기에서 != 연산자는 객체의 참조 값을 비교하므로, 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";
}
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 |
---|