api로 게시판 목록 조회시 권한이 없어도 게시물 내용이 조회가 됩니다.
본문
읽기 권한을 2이상으로 설정한 게시판의 게시물을 /api/v1/boards/board_id/writes/1 로 조회하면
{"detail":"글을 읽을 권한이 없습니다."}
처럼 권한이 체크되서 게시물이 조회가 안되는데, /api/v1/boards/board_id/writes?page=1 처럼 목록을 조회하면 각 게시물 목록 뿐만 아니라 내용까지 모두 조회되서 wr_subject, wr_content 등을 통해 본문이 그대로 보입니다.
그누보드 버전은 gnuboard6.0.10 입니다.
이슈 게시판에 글을 써보려고 했더니 권한이 없다고 나오는데 권한 요청드려도 되나요?
답변 3
목록보기 권한도 체크하셔야 할 듯 합니다.
제가 테스트했을때에는 "목록을 볼 권한이 없습니다." 메시지와 함께 403 에러가 발생했습니다.
아마 로그인한 상태에서 /docs 스웨거 UI를 통해 요청하셨을 것 같습니다.
소스를 보니 특이한 점이 있습니다.
보통 REST api는 사용자 인증(userid, password)후 Token을 발급받아 매 API 요청시 권한을 검사합니다.
그런데 현재 ListPostServiceAPI class 구현은 이러한 token 검사 과정이 없습니다.
그럼에도 불구하고 위 403 에러가 발생하는 이유는 ListPostServiceAPI가 상속받은
부모 클래스(ListPostService class)에서 is_list_level() 함수를 통해 로그인한 사용자 세션 정보(member)를
가져와 권한을 체크하고 있기 때문입니다.
ListPostServiceAPI 는 '로그인 세션을 통한 member정보 획득 방식'이 아닌, 토큰을 통한 member정보를
가져와서 list요청에 대한 권한을 검사하도록 구현이 필요할 것 같습니다.
is_possible_level() 이라는 함수가 이미 존재하는 것으로 보아 이런 목적을 위해 선행 구현해놓으신 것이 아닌가 생각이 듭니다.