아이퐁퐁
268
2021-11-27 14:43:56
2
128

SecurityContextHolder 질문이 있습니다 ㅠㅠ...


안녕하세요

제가 게시판 만드는 공부를 하고 있습니다. 

이번에 스프링 시큐리티를 적용해서 로그인 구현을 했습니다.

그런데 이전에는 글을 작성할 때 작성자가 아이디가 아닌 닉네임으로 나오게해서



userVO = (UserVO) session.getAttribute("user");

String usernick = userVO.getUserNick();

boardVO.setUserNick(usernick);



위 방식을 사용했습니다. 그런데 시큐리티를 적용하고 나서는 사용할 수 없는 것 같아서


그래서 질문을 드렸고 감사하게도 ROJAEKA님께서 답변으로 SecurityContextHolder 를 말씀해주셨습니다.. 그래서 제 나름대로 찾아서 



CustomUserDetails userVO = (CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();

String userNick = userVO.getUserNick();

boardVO.setUserNick(userNick);



컨트롤러에 위 코드를 써보니 


java.lang.ClassCastException: class org.springframework.security.web.authentication.WebAuthenticationDetails cannot be cast to class com.yoohyun.diary.vo.CustomUserDetails (org.springframework.security.web.authentication.WebAuthenticationDetails and com.yoohyun.diary.vo.CustomUserDetails are in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @5ef6ae06)


라는 오류가 발생하네요. 


CustomUserDetails userVO = (CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getDetails(); 


위 줄에서 오류가 발생하는데 

getDetatils(); 가 유저의 부가 정보를 가져오는 게 맞나요? 


오류의 내용이 캐스팅 할 수 없다는 건 알겠는데 어떤 부분의 문제인지 전혀 감이 잡히지가 않습니다. 


어떤 부분에 접근을 해야할지 질문드립니다.

0