@PutMapping("/api/users/{id}") public ResponseEntity<?> update(@PathVariable Integer id, @RequestBody UserRequest.UpdateDTO reqDTO) { User sessionUser = (User) session.getAttribute("sessionUser"); User newSessionUser = userService.회원수정(sessionUser.getId(), reqDTO); session.setAttribute("sessionUser", newSessionUser); return ResponseEntity.ok(new ApiUtil(newSessionUser)); }
나는 3번으로 로그인했는데 여기(id)다가 1을 강제로 날리면 위험한 코드 + 이 아이디랑 세션 아이디가 동일한지 검증하는게 너무 귀찮다. 그냥 세션아이디 받아서 쓰면 되는거 아닌가? 권한 체크 할 바엔 세션 아이디를 빼서 쓰는게 좋잖아? 세션에서 빼오면 굳이 안 적어도 되는데 왜 {id}도 주소에 같이 적어주는 걸까? 1. 관리자의 세션 아이디는 다르다. 원래 관리자는 다른 사람들 것도 수정이 가능함 관리자 입장에서는 로그인은 관리자만 하고, id에 뭘 넣어도 다 체크할 수 있어야 함! (db에 role = admin 이런게 필요 or 아예 주소를 /admin 이런걸 만들기) 2. 프런트 엔드 입장에서는 /api/users/{id} 를 쓰는게 좋다. api이기 때문에! api/users 면 모든 유저를 다 수정하는 것처럼 보인다. 이걸 실질적으로 사용하지 않아도 프런트 엔드가 쉽게 판단할 수 있도록 이렇게 쓰는게 좋다 우리 입장을 보고 일하는게 아니라, 상대방 입장에서 봐야함!
Share article