묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
@EnableWebSecurity
@EnableWebSecurity 꼭 붙여야 된다고 하셨는데 안붙여도 움직이는데 붙이고 안붙이고의 차이가 있나요?의존성에 spring-security 들어가 있으면 AutoConfiguration 에 의해 자동구성된다면 붙일 이유가 없을것 같은데 뭔가 다른게 더 초기화작업에 추가되거나 하는건가요?
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
로그인 성공시
로그인 성공시defaultSuccessUrl 에서는 "/todos" 로 설정하고successHandler의 CustomLoginSuccessHandler 에서는 "/" 로 되어 있을때 어디로 리다이렉트 되어야하나요?설명에는 defaultSuccessUrl 가 우선순위라고 하셨는데, 실행해보면 / 로 갑니다.
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
SocialLoginWeb1303 소스 제공해 주시면 안되나요?
SocialLoginWeb1303 소스 제공해 주시면 안되나요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
트랜잭션과 롤백
안녕하십니까 선생님, 이렇게 세션을 Redis에 저장할 때에는 예외 발생 시 트랜잭션, 롤백 같은 기능은 어떤 식으로 처리를 해야 하는 지 질문 드립니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 중간중간에 음성이 나오지 않아 글 작성 합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?
안녕하세요. 현재 강의를 통해 JWT를 구현하여 전체적인 개념을 익힌 백엔드 개발 취준생입니다. 배운것을 저의 웹 프로젝트에 적용하려고 했지만 이 api를 호출해서 하는 것은 자바스크립트를 사용해서 하는 것이 있길래 백엔드 개발자라면 어디까지 구현해야할지가 참 어려운 것 같습니다. RestController로 API 개발까지는 수업을 통해 구현할 수 있지만 나머지를 웹에 적용하는 것은 어려운 것 같습니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
AuthenticationManager 사용 방법
안녕하십니까 선생님, 양질의 강의 항상 감사드립니다.AuthenticationManager와 AuthenticationProvider의 구성에 대해서 개념적으로 확인하고 싶은 것이 있어 질문 드립니다.AuthenticationProvider를 직접 구성하여 등록하지 않으면 기본적으로 DaoAuthenticationProvider, BasicAuthenticationProvider, RememberMeAuthenticationProvider 가 등록이 되는데, 직접 커스텀한 Provider를 등록 시 이 3개의 기본 Provider들은 자동 구성에서 제외 되는 것 인가요?만약 AuthenticationManger를 builder 혹은 직접생성(new)을 통해 생성한다면 기본 제공 되는 Provider들은 자동 구성에서 제외되는 것 인가요? 만약 그렇다면 AuthenticationManager는 직접 등록하고 싶은 Provider가 있을 때에만 생성하는 것 인가요?
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
인터셉터
스프링 시큐리티를 적용하고 나서 modify가 계속 /member/signin으로 리다이렉트 되는 현상이 발견되었는데, 원인을 파악해보니 인터셉터 클래스 문제였습니다.(기존 인터셉터 클래스에선 session을 기반으로 로그인 상태여부를 확인하는데, Spring Security를 사용하고 나선, session이 아닌 SecurityContext에 로그인 정보를 보관하니 서로 충돌을 일으켜 계쏙 signin으로 리다이렉트 되는거 같습니다.) 혹시 이 부분이 맞는지 확인 부탁드리며, 제가 쓴 내용이 맞다면, 강의 내용중에 이부분을 짚어주셨으면 합니다.
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
DTO 관련
강의 열심히 듣고 있습니다. 다름이 아니라, DTO 관련 의구심이 들어서 질문 올립니다. 선생님께선 modifyConfirm 일때dto의 pw 값을 encode된 값으로 변경하셔서 entity로 넣으셨는데,String encodedPW = passwordEncoder.encode(memberDTO.getPw()); memberDTO.setPw(encodedPW) findedMemberEntity.setMemPw(memberDTO.getPw()); 위의 방법대로 하면, dto값이 변경이 되어 "단순 전달 객체"를 위배할 수 있으며, 간결성과 가독성이 떨어지는게 아닌가 싶어서요 아래와 같이 리펙토링 하면 조금 더 간결하게 되지 않을까요?if (optionalMember.isPresent()) { MemberEntity findedMemberEntity = optionalMember.get(); findedMemberEntity.setMemPw(passwordEncoder.encode(memberDTO.getPw())); ~~ return MODIFY_SUCCESS; }
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
현재 제 build.gradle은plugins { id 'java' id 'org.springframework.boot' version '3.5.0' id 'io.spring.dependency-management' version '1.1.7' } group = 'io.security' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } 같이 설정이 되어 있습니다. AntPathRequestMatcher, MvcRequestMatcher가 사용이 되지 않는다고 자동완성때 밑줄이 쳐져 있어서.requestMatchers("/manager/**").hasAuthority("ROLE_MANAGER") .requestMatchers("/admin/payment").hasAuthority("ROLE_ADMIN")이렇게 수정하였는데 맞게 수정 한 것인지 문의 드립니다.
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
추가 강의 해주실수 있나요?
강의 맘에 듭니다 아직 뒤에는 못봤지만 스웨거와 querydsl를 이용한 강의도 오픈 해주셨으면 해요
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
데이터베이스 테이블이 중복 생성 되는 오류
영상 52분에서 로그인이 성공되는 반면 저는 로그인이 계속 실패나와서 무엇이 문제인지 확인하는데 데이터베이스 테이블이 두 개가 생성된 것을 확인했습니다. 기존에 있던 테이블은 USER_MEMBER 인데, Entity 객체를 만들고 나서 user_member 테이블이 생성되었고 애플리케이션 실행 후 다시 가입을 하면 user_member 데이터베이스에 저장되며 기존 기능들은 에러 없이 정상 작동이 됩니다.. 궁금한 것은 데이터베이스 테이블이 저렇게 두 개 생성된건데 제가 무엇을 잘못해서 만들어졌는지 또 이대로 사용하는데 문제는 없는지 궁금합니다.. 코드는 선생님 코드랑 다른 부분이 없습니다 ㅠ
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
저는 그래도 최신버전으로 테스트 하면서 비교를 해가며 학습하는게 좋겠다 싶어 학습중입니다.현재 springboot 3.5으로 학습중이며 security는 6.3인것 같습니다.그런데 학습 중 바뀐부분이 있는것 같아 확인 부탁 드리고 자 글을 남깁니다. 아래 내용이 맞는지 알고 싶어요..ㅠㅠ 🍜 비유로 설명: "라면 공장"🥣 Spring Boot 3.2 (옛 구조)**HttpSecurityConfiguration**이 먼저 출근해요"물 끓이고, 면 넣고, 스프 넣고" 직접 다 해요마지막에 포장(= SecurityFilterChain)도 본인이 함즉, 한 사람이 보안 설정 전체를 다 하는 구조🍱 Spring Boot 3.5 (새 구조)**WebSecurityConfiguration**이라는 총괄 매니저가 먼저 출근이 사람이 여러 명의 담당자 (HttpSecurity 설정)에게 일을 시켜요그리고 포장은 SecurityFilterChain으로 조립해서 내보냄즉, 분업된 구조 — 공장은 커졌고, 매니저가 통제함 🔍 왜 이런 변화가 있었을까?이유설명설정이 너무 복잡해졌음HttpSecurityConfiguration 혼자 하다 보니 커지고 유지보수가 어려움커스터마이징이 어려웠음사용자 정의 체인 추가가 어렵고 제한적이었음다중 체인 지원 부족API별 다른 보안 적용이 힘들었음 (/api/**, /admin/**)새 구조가 더 유연SecurityFilterChain을 빈으로 만들면 순서, 조건, 분리 모두 명확해짐🧠 구조 비교 요약항목Spring Boot 3.2 (Security 6.2)Spring Boot 3.5 (Security 6.3)먼저 실행HttpSecurityConfigurationWebSecurityConfiguration중심 클래스HttpSecurityConfigurationWebSecurityConfiguration책임 방식거의 혼자 다 함분업 (매니저 + 여러 체인)구성 방식내부적으로 HttpSecurity 설정외부에서 SecurityFilterChain 등록유연성다중 체인 어려움다중 체인, 조건부 설정 매우 쉬움✅ 결론Spring Boot 3.2에서는 여전히 옛 구조(약간의 WebSecurityConfigurerAdapter 잔재)를 끌어와서→ HttpSecurityConfiguration이 보안 설정의 진입점 역할을 했고,Spring Boot 3.5에서는 완전 리팩토링된 구조라서→ WebSecurityConfiguration이 보안 설정의 시작점(매니저)이 되었어요.
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
몇가지 질문드립니다.
안녕하세요 우선 좋은 강의 정말 감사합니다. 풀스텍 강의라서 더 좋은거 같은데, 메일로 알람을 받았는데 선생님 강의 25%할인은 언제까지인가요? 지금 유료 강의 25%해서 24000원대 할인 기간이 안나와 있어서 기간이 궁금합니다. 아직 들어보지 못해서 무료 강의 한번 들어보고 유료강의도 진행하고 싶어서요 그리고 프로그램은 이클립스만 사용하시는거 같은데, 저는 인텔리제이 사용중인데 프로그램이 달라서인텔리제이 사용자도 괜찮을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
안녕하세요, 수업 내용을 보면 6:00 시간대의 수업자료를 보면 SecurityConfigurer에서 init(B Builder), configure(B builder)을 호출한다고 나와있습니다. 하지만, 실제 소스코드를 보면 아래와 같은데, 파라미터를 보면 Builder 타입이 아닌, 파라미터를 넘기지 않는 것을 확인할 수 있습니다.@Override protected final O doBuild() throws Exception { synchronized (this.configurers) { this.buildState = BuildState.INITIALIZING; beforeInit(); init(); this.buildState = BuildState.CONFIGURING; beforeConfigure(); configure(); this.buildState = BuildState.BUILDING; O result = performBuild(); this.buildState = BuildState.BUILT; return result; } }확인 부탁드려도 될까요?감사드립니다.
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
db연결 질문있습니다!
제가 아직 기본이 부족한 상태여서 여쭤봅니다! mysql의 스키마 설정을 따라해서 되긴 했는데spring과 mysql의 연결이 spring코드의 어떤 부분에서 자동으로 되는건지 자세히 여쭤볼 수 있을까요??
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
mysql 설치파일
저는 맥북을 사용하고 있는데요 맥북 사용자들을 위한 거는 전혀 없는데 그런것도 고려해서 해주셔야 할거 같은데요 지금 mysql 설치 할려고 하는데 이거 맥북에 설치 가능한거에요?
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
강의자료
안녕하세요 혹시 해당 강의에 GitHub 주소나 자료가 따로 없을까요..?
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
리엑트 페이지 랜더링
안녕하세요,강사님 리엑트 코드와 똑같이 만들었지만페이지가 이상하게 나옵니다. 요런 식으로 나오는데 추가적으로 만져야 할 게 있을까요?제 패키지 파일 공유드립니다.{ "name": "login_react", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint .", "preview": "vite preview" }, "dependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^7.1.1", "@mui/material": "^7.1.1", "react": "^19.1.0", "react-dom": "^19.1.0", "react-router-dom": "^7.6.2" }, "devDependencies": { "@eslint/js": "^9.25.0", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "@vitejs/plugin-react": "^4.4.1", "eslint": "^9.25.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.19", "globals": "^16.0.0", "vite": "^6.3.5" } }
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
질문있습니다.
안녕하세요, 강의 너무 잘 수강하고 있습니다.강의 수강 중 질문이 생겨서요refresh Token을 사용하지 않는 이유가 있을까요?access 토큰 하나를 하루의 유효기간을 부여해서 사용하는 이유가 궁금합니다.jwt 버전이 0.11.5로 진행해주셨는데0.12.x 버전도 있는 걸로 알고 있어요버전의 올라감과 동시에 로직의 변화도 있는 거로 알고 있습니다.요것도 0.11.x로 진행하신 이유가 궁금합니다.