본문 바로가기
일기/항해99

[항해99 6기] Spring 2주차 - 인가 문제

by 고구밍 2022. 3. 30.

상세페이지 인가 문제 (페이지 이동)

더보기

 

ㄱ. 문제 : 로그인없이 처음 들어갔을 때 전체 댓글조회가 undefined (api값이 서버에서 안 넘어옴) 발생

김남석 기술 매니저님께서

1.어느 api를 호출을 했고,

2. 어떻게 응답값이 나오겔레 undefined가 나오는지 확인해 보라고 조언을 해주셨습니다.

 

undefined를 검색한 결과 null과 다르게 값이 아에 없다는 의미라는 것을 알았지만,

어떻게 조치해야 되는 지 몰라서, 주변 인들에게 도움을 청해서 해결하게 되었습니다.

 

 

해결 방법은 아래와 같습니다.

 

 

ㄴ. 문제 : 클릭을 했을 때 댓글의 상세페이지 (detail.html)로 이동할 때 오류 발생

 

서비스가 WebSecurityConflg에서 상세페이지(/detail)주소에 대한 인가가 안되어있어서

 

막혀있는 문제입니다.

 

그래서 아래와 같은 순서로 이를 해결해 보면 될 것 같습니다.


 

1. 서버에서 api를 열어줘야한다.

(인가 : 유저에 대한 권한을 허락하는 것)

-> 댐문을 열어야 api 정보를 보내준다

 


2. WebSecurityConflg.java

-> /api/**을 인가해줘야한다 


-> contentsrestRestController에서

전체 조회 url주소를 넣어주면된다.


-> **은 전체 주소를 의미

로그인 안해도 댓글 조회 okay!

 




3. 상세페이지 (detail) 들어갈 떄 404오류가 발생할 떄 -> 주소에대한 인가를 on

4. 2번과 동일하게 작성하되 index에서 <a href="detail.html?id=${id}">에서
-> "/detail.html"뒤의 
-> "?id{id}"을 **로 설정

5. detail페이지로 이동하는 주소가 인가가 된다.

상세페이지 페이지 이동 okay! 

 


 

ㄱ번 문제-1 : api 정보가 "/api/contents" 로 보내고 있네요
ㄱ 번 문제-2 : "/api/contents"에서 "/api/**"를 모두에게 인가를 하여서, 정보를 받아올 수 있게 했습니다.
ㄴ 번 문제 : GetMapping을 하나를 HomeController에 만들어서 하였습니다. / ㄱ-2번 문제에도 "/detal.html**"을 인가하였습니다

 추가설명)

인가를 하는 과정에서 "/detal.html**"을 했는데,

**부분을 "/"가 아닌 파일이름이 바로 옆에 넣은 이유는

-> 사용자가 상세페이지를 클릭 했을 경우 해당 id값이 html 바로 옆에 붙기 때문입니다. 

 

 

작동 okay!

더보기
로그인을 안했을 떄
로그인을 했을 떄