작성
·
453
0
@PreAuthorize("isAuthenticated() and (( #board.createdBy == principal.userId ) or hasRole('ROLE_ADMIN'))")
@RequestMapping( value = "/{id}", method = RequestMethod.PUT)
public ResponseEntity<Message> updateUser(Board board, @Pathvariable String id){
messageService.updateMessage(id);
return new ResponseEntity<Message>( new Message("수정성공"), HttpStatus.OK );
}
답변 1
0
네
보통 본인글을 본인만 삭제 가능하게 할려면 세션을 활용합니다
세션 자체가 사용자별로 구분되는 저장소이기 때문에 글을 등록하는 시점에 세션에 담긴 본인정보를 등록자로 저장합니다
그리고 요청에 대한 권한여부를 체크할 때 현재 세션에 담긴 유저정보와 게시글에 저장된 등록자 정보를 비교해서 일치하는지 여부를 판단해서 처리하게 됩니다
그렇다면 위의 구문에서 board.createBy 는 등록자 정보고 principal.username 는 세션에 저정된 유저정보라고 해석할 수 있습니다
"해당 글쓴이의 id(pk)를 제 id와 같게 담아서 보내면 삭제할수 있는 권한만 있으면 다른 글도 삭제 혹은 수정이 되지 않는가?"
이 부분은 당연한 질문인데 요청시 저 부분이 조작되지 않도록 구현해야 하겠죠