개발자
스프링시큐리티를 스프링부트 내에서 프론트엔드, 백엔드 모드 구현하렸을 때는 문제가 없었는데 프론트엔드를 리액트로 바꾸고 떼어냈습니다. 로그인은 되는데 principal 이 anonymius 값으로 뜹니다. 이유를 알 수 있나요? 프론트에서 백엔드로 아이디, 비밀번호 외에 다른 것도 보내야 하나요? 백인드는 전과 동일합니다
답변 1
안녕하세요. 지나는 길에 도움이 될 수 있을까 싶어 답변 남겨봅니다. 스프링 시큐리티의 세션 관리 전략의 기본은 HTTP Session을 기반으로 동작합니다. 설명해주신 상황을 바탕으로 유추해보자면 웹 클라이어트를 리액트로 변경하는 과정에서 스프링 시큐리티를 통해 인증시 생성된 세션 ID가 올바르게 서버로 전송되지 않아 발생하는 문제로 보입니다. 1. 클라이언트와 서버 사이에 세션이 유지되는지 확인이 필요해보입니다. 2. 세션이 유지되고 있다면 리액트 클라이언트에서 서버로 웹 요청을 보낼 때 쿠키를 전송하고 있는지 확인이 필요해 보입니다. https://www.javadevjournal.com/spring-security/spring-security-session/
익명
작성자
2022년 10월 13일
헉 감사합니다ㅜㅜ 백엔드 프론트엔드 분리하니 문제가 계속 생겨서 기초가 부족한것같다고 생각하여 세션,토큰 등 개념부터 스프링 시큐리티 개념을 다시 공부 중이었습니다. 그런데 질문이 하나 있습니다. 리액트와 스프링을 연동할 때 보통 jwt를 많이 쓰는 것으로 압니다. jwt를 쓰려면 시쿠리티 config에서 세션을 stateless로 설정하여야 한다고 합니다. 이렇게 되면 쿠키에 세션아이디가 실리지 않는데 쿠키에 토큰값을 실어서 로그인을 유지하는 것이 맞는지(지금은 서버로 토큰을 보내서 인증하고 리액트 로컬 스토리지에 토큰을 저장하였습니다) 쿠키에 토큰을 실으려고 하는 이유는 서버를 여러개로 분리하고 싶은데 8080포트로 로그인해도 8081에서 로그인이 유지되었아면 해서 입니다..!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!