강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

gamza님의 프로필 이미지
gamza

작성한 질문수

spring boot security 적용시 currentUser에 null값 들어가는 이유

작성

·

572

·

수정됨

0

안녕하세요

인프런 강의 들으면서 모르는 부분들은 찾아가면서 공부하고 있는 학생입니다.

security 강의 듣고 프로젝트를 생성해서 연습하다가 로그인하는 것까지는 구현이 된 것 같은데

스프링필터 설정에서 한 /memo/** 주소에 접근이 가능해졌다면 시큐리티 로그인이 잘 작동한 게 맞을까요 ?..

화면 캡처 2024-01-04 011908.png그리고 memoForm 페이지로 입장하면 currentUser가 null로 확인되고 메모를 저장하려고 시도하면

당연히 currentUser에 null이 들어가있어서 NullPointerException 오류가 나게 돼요.

화면 캡처 2024-01-04 013634.png

왜 로그인은 되었는데 currentUser에 아무 값도 들어 있지 않은 건지 이유를 잘 모르겠습니다.

저와 비슷한 문제를 해결하신 경험이 계신 분이 있다면 어느 부분에서 수정을 해야 할 지 힌트라도 알려주시면 감사하겠습니다 ( •_ •̥ ˳ ˳ )

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

김지현님의 질문에 대해 답변 드리겠습니다.

스프링 시큐리티를 적용한 뒤 /memo/** 주소에 접근할 수 있다면, 시큐리티 설정 자체에는 문제가 없는 것으로 보입니다. 하지만 currentUsernull로 나오는 것은 문제가 있는 것이며, 이는 여러 가지 원인이 있을 수 있습니다.

첫 번째로, @AuthenticationPrincipal 어노테이션이 현재 인증된 사용자를 제대로 가져오지 못하고 있을 수 있습니다. 만약 UserDetailsService를 커스터마이징하여 사용 중이라면, loadUserByUsername 메서드 구현이 올바르게 되었는지 확인해 보세요. 이 메서드는 사용자의 인증 정보를 UserDetails 객체로 반환해야 합니다.

또한, 시큐리티 설정에서 적절한 AuthenticationManager, AuthenticationProvider, 또는 UserDetailsService가 빈(Bean)으로 등록되어 있는지 확인해 보셔야 합니다. 기본 InMemoryUserDetailsManager 대신 사용자 지정 UserDetailsService를 사용하는 경우, 해당 빈을 등록해야 합니다. 참고하실 수 있도록 관련 문서의 링크를 첨부해 드립니다.

마지막으로, AuthenticationPrincipal이 기대하는 타입인 MemoUser가 현재 세션의 인증 정보(Principal)와 일치하는지도 확인해 보셔야 합니다.

코드의 문제점을 파악하기 위해서는 사용 중인 시큐리티 설정 및 UserDetailsService의 구현 내용도 필요할 수 있으니, 필요하신 경우 코드와 함께 추가적인 질문을 해 주시면 더 자세히 안내해 드릴 수 있을 것 같습니다.

이상으로 답변을 마치겠습니다. 추가적인 도움이 필요하시면 언제든지 문의해 주세요.

gamza님의 프로필 이미지
gamza

작성한 질문수

질문하기