강사님 질문 있어요.
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
Spring security 에서 주요 HTTP 보안 헤더 설정에 대한 내용은 어느 장에서 확인할 수 있나요?
- spring
- spring-boot
- spring-security
- security
- web-security
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
Spring security 에서 주요 HTTP 보안 헤더 설정에 대한 내용은 어느 장에서 확인할 수 있나요?
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
AdminService.java에서 List<MemberDto> admins = memberEntities.stream() .map(MemberEntity::toDto) .collect(Collectors.toUnmodifiableList());Collectors.toList(); 이 코드에서 Collercotrs.toList(); 가 의미가 있는 코드일까요? 줄바꿈도 안되어 있고, 약간 이해가 안되는 문장 같아서 질문드립니다.
미해결
스프링 부트와 리액트로 구현하는 소셜 로그인
9. 스프링 부트 프로젝트 생성 하고나서 10. 일반 로그인 실행 에 To-Do App과 바로 로그인이랑 이런것들 코드를 생성한적이없는데 어떻게 생겨있나요?
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
8분 29초에서 /logoutProc 를 겟방식으로 호출했고 로그아웃은 성공했습니다. 로그아웃 성공후 /logoutSuccess 로 이동해야 하고 해당 url 은 permitAll() 입니다. 그런데 왜 로그인화면이 표시되는지 궁금합니다. 강의를 조금 더 보다보니, 궁금증은 해결됐습니다. 그런데 여전히 궁금한 점은 해당 소스에 맨 아래 permitAll() 의 역할입니다. 실제 아무일도 안하는건지 궁금합니다.
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
안녕하세요, 57강 관련 질문입니다. Dto 클래스를 완전히 없애버리고 Entity만 사용하는 건 불가능한 건가요? Entity가 DB 관련 어노테이션을 가지고 있다는 점을 제외하면 Dto 클래스와 굉장히 유사한 형태인데, 이 두 개를 왜 꼭 따로 정의하고 사용해야 하는 것인지 이해가 잘 안 갑니다!
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
안녕하세요, 강의 잘 듣고 있습니다. '데이터베이스 연동하기 - I' 강의에서 application.properties 파일에 spring.datasource.password=1234 로 작성하셨는데, 실제로 프로젝트를 할 때에도 이렇게 비밀번호를 직접 노출하는 방식으로 작성을 하나요? 뭔가 비밀번호이다 보니 코드로 이렇게 노출시키면 안 될 것 같은 느낌이 들어서 궁금합니다!
미해결
스프링 부트와 리액트로 구현하는 소셜 로그인과 보안 JWT 로그인
선생님 안녕하세요! "스프링 부트와 리액트로 구현하는 소셜 로그인" 강의와 차이점이 뭘까요?
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
안녕하세요. 이제 강의를 조금씩 들어보려고 하는데 강의 pdf는 있는데 소스코드는 따로 못본거 같은데 어디서 확인할 수 있을까요? https://github.com/onjsdnjs/spring-security-master/tree/master 이거인거 같은데 단원하고 코드하고 연결이 안되어있어서 각 강의 단원별 뭘 봐야되는지 알수가 없어서 너무 많은 시간이 낭비되는거 같습니다.... 체계화가 안되어있어서 시작하기 전 부터 좀 실망스럽고 당황스럽습니다. 맵핑 (단원 - 깃 브랜치) 되어있는 자료가 있으면 좋겠습니다. 감사합니다.
미해결
스프링 부트와 리액트로 구현하는 보안 JWT 로그인
안녕하세요. 20강 클레임 미검증 주의 강의를 듣다가 JJWT 0.12 버전에서 Claims claims = Jwts.parserBuilder() .setSigningKey(key) .build() .parseClaimsJws(token) .getBody(); 위의 예제 코드에서 parserBuilder, setSigningKey는 더 이상 0.12 이상 버전에서는 지원하지 않는 메소드라고 나와서요 Claims claims = Jwts.parser() .verifyWith(key) .build() .parseSignedClaims(token) .getPayload(); 위의 코드로 대체하면 될지 문의 드립니다...!
미해결
스프링 부트와 리액트로 구현하는 보안 JWT 로그인
안녕하세요 강사님 제가 알림기능을 만들려고 하는데 예를 들어 음식을 사고 영수증을 찍었을 때 OCR 기술을 이용하여 사진을 인식하여 유통기한이 임박했을때 알림이 오는 기능을 만들려고 생각중입니다. 이런 경우는 따로 ERD 를 이용해서 만들어야 할까요? 이런 기능 자체가 처음이라 질문드립니다. 그리고 알림 기능은 현업에서 파이어베이스를 쓰는 게 맞을까요?
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
첨부한 사진의 소스 상으로 보면 @Bean으로 두개의 customAuthenticationProvider를 등록했습니다. 그러면 @Bean으로 등록했기 때문에 이 두 커스텀 프로바이더는 처음에 parent의 providers에 추가되고, http build 하는 과정에서 빌더에 이 두 커스텀 프로바이더를 추가하니 child 쪽의 providers에도 다시 추가, http.formLogin(Customizer.withDefaults());를 호출하기 때문에 child 쪽에 DaoAuthenticationProvider 추가. 최종적으로 child - CustomAuthenticationProvider, CustomAuthenticationProvider2, DaoAuthenticationProver parent - CustomAuthenticationProvider, CustomAuthenticationProvider 이렇게 추가되어야 하지 않나요?
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
스프링 부트 4.0부터 AOP 의존성 명칭 바뀌었으니 참고하세요. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide 4.0 이전 implementation 'org.springframework.boot:spring-boot-starter-aop' 4.0 이후 implementation 'org.springframework.boot:spring-boot-starter-aspectj'
미해결
스프링 시큐리티 완전 정복 [6.x 개정판]
@Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) { return http .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) .formLogin(Customizer.withDefaults()) .authenticationProvider(customAuthenticationProvider()) .authenticationProvider(new DaoAuthenticationProvider(inMemoryUserDetailsManager())) .build(); } @Bean public AuthenticationProvider customAuthenticationProvider() { return new CustomAuthenticationProvider(); } @Bean public UserDetailsService inMemoryUserDetailsManager() { UserDetails user = User.withUsername("user") .password("{noop}1111") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } } 메소드 인자로 AuthenticationManagerBuilder 랑 Authenticationconfiguration 을 주입 받아서 수동으로 parent Manager가 가진 Provider를 삭제하고 추가하는 작업을 하지 말고, 그냥 안전하게, 대체되었던 DaoAuthenticationProvider 를 authenticationProvider() 로 다시 추가하면 안 되나요?
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
제가 Eclipse 환경에서 수업을 들어야 하는 상황인데요 ...... 지금 수업 내용보니까 InteliJ를 설치하셔서 수업을 하시는데..제가 Eclipse로 수업을 따라갈 수 있을까요
미해결
스프링 부트와 리액트로 구현하는 보안 JWT 로그인
강사님 세션 9에서 Secretes Manager나 Parameter Store 를 현업에서도 깃허브 액션 하고 같이 쓰나요? 이거 궁금해서 질문드립니다.
미해결
스프링 부트와 리액트로 구현하는 보안 JWT 로그인
강사님 혹시 44강 듣고 있는데 이거 프론트엔드 코드가 깃허브에 있는것과 다른 코드인데 어디서 볼 수 있나요?
해결됨
누구보다 빠르게 배우는 Kotlin + Springboot + JWT 로그인
영상을 시작하면 갑자기 JwtUtils 코드가 이미 어느 정도 작성된 상태에서 뭔가 에러 체크 하시는 부분부터 시작이 됩니다
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
// 컨트롤러 메서드 @DeleteMapping("/plan/{no}") public ResponseEntity<Map<String, Object>> removePlan(@PathVariable(value = "no") int no){ Map<String, Object> resultMap = plannerService.removePlan(no); return ResponseEntity.ok(resultMap); } // 서비스 메서드 @Transactional public Map<String, Object> removePlan(int no) { System.out.println("no :" + no); log.info("removePlan"); Map<String, Object> resultMap = new HashMap<>(); int result = plannerRepository.deleteByPlanNo(no); if(result > PLAN_DELETE_FAIL){ log.info("REMOVE PLAN SUCCESS"); }else{ log.info("REMOVE PLAN FAIL"); } resultMap.put("result", result); return resultMap; } // 레퍼지토리 메서드 int deleteByPlanNo(int planNo); // 삭제된 행의 개수 첫번째 질문 위 코드처럼 작성을 하고 delete 버튼을 클릭하면 2025-12-21 20:36:32 ERROR [[dispatcherServlet]] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.ClassCastException: class com.office .calendar.planner.jpa.PlannerEntity cannot be cast to class java.lang.Integer ( com.office .calendar.planner.jpa.PlannerEntity is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @34790124; java.lang.Integer is in module java.base of loader 'bootstrap')] with root cause java.lang.ClassCastException: class com.office .calendar.planner.jpa.PlannerEntity cannot be cast to class java.lang.Integer ( com.office .calendar.planner.jpa.PlannerEntity is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @34790124; java.lang.Integer is in module java.base of loader 'bootstrap') at jdk.proxy4/jdk.proxy4.$Proxy153.deleteByPlanNo(Unknown Source) ~[?:?] at com.office .calendar.planner.PlannerService.removePlan(PlannerService.java:124) ~[main/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.springframework.aop.support .AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) ~[spring-aop-6.2.11.jar:6.2.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.2.11.jar:6.2.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.2.11.jar:6.2.11] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) ~[spring-tx-6.2.11.jar:6.2.11] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-6.2.11.jar:6.2.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.11.jar:6.2.11] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) ~[spring-aop-6.2.11.jar:6.2.11] at com.office .calendar.planner.PlannerService$$SpringCGLIB$$0.removePlan(<generated>) ~[main/:?] at com.office .calendar.planner.PlannerController.removePlan(PlannerController.java:123) ~[main/:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) ~[spring-web-6.2.11.jar:6.2.11] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) ~[spring-web-6.2.11.jar:6.2.11] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.11.jar:6.2.11] at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:936) ~[spring-webmvc-6.2.11.jar:6.2.11] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:596) ~[tomcat-embed-core-10.1.46.jar:6.0] at ... 위 예외가 발생하면서 planner_fetch.js의 fetchRemovePlan 함수에서 catch 문에 걸리면서 alert('일정 삭제 중 오류가 발생했습니다.'); 이 실행됩니다. 서비스에서 deleteByPlanNo를 호출할 때 문제가 발생한 것 같은데 찾아보니 레퍼지토리 메서드에 @Modifying을 붙여보라고 해서 해봤는데 해결은 안됐습니다. 어떤 원인으로 위 같은 예외가 발생한거고, 어떻게 해결할 수 있는지 질문드립니다. 두번째 질문 이전 질문에서 <script src="planner_fetch.js"></script> <script src="planner.js"></script> 위 코드는 브라우저에서 다음과 같이 처리됩니다. 1. planner_fetch.js를 읽고 실행 2. 그 다음 planner.js를 읽고 실행 3. 이 두 파일은 각각 다른 파일이지만, 브라우저에서는 하나의 JavaScript 실행 공간에서 실행 결과적으로 파일이 나뉘어 있어도 "같은 공간"에서 실행되기 때문에 서로의 전역 변수, 함수 등을 공유할 수 있습니다. 하나 더 중요한 사실이 있는데요, 로딩 순서가 중요합니다. <script src="planner_fetch.js"></script> <script src="planner.js"></script> 위와 같은 순서라면, planner_fetch.js가 먼저 실행되고 planner.js에서 planner_fetch.js 안의 함수를 사용할 수 있습니다. 하지만, 로딩 순서를 변경하면 <script src="planner.js"></script> <script src="planner_fetch.js"></script> 다음과 같은 에러가 발생할 수 있습니다. fetchPlans(); // 에러 (아직 정의되지 않음) 즉, 먼저 로드 된 파일의 함수만 사용할 수 있습니다. 이렇게 답변을 주셨는데 추가적으로 궁금한 점은 planner.js가 나중에 로드 되어서 planner.js에 있는 함수나 변수를 planner_fetch.js에서 사용하면 정의 되지 않아서 사용을 못해야 할텐데 코드에서는 planner.js에 있는 showDetailPlanView 함수라든지 current_year같은 변수를 사용하고 있는데 에러가 발생하지 않습니다. 이 부분 질문드립니다.
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
1.일정 관련 js파일이 planner.js와 planner_fetch.js 파일로 나눠져 있는데 planner.js에서 planner_fetch.js에 있는 함수들을 사용하고 planner_fetch.js에서는 planner에 있는 함수, 변수들을 사용하던데 각각 별도의 js 파일들인데 어떻게 서로 변수나 함수들을 가져다 사용할 수 있는지 궁금합니다. planner_fetch.js의 fetchGetPlan 함수에서 fetch url이 /planner/plan/3 형식이 아니라 /planner/plan?no=3 형식이던데 이렇게 사용한 이유가 있을까요??
미해결
스프링 부트와 리액트로 구현하는 보안 JWT 로그인
로그인구현 직접하는줄 알고 결재했는데 직접구현하는 강의가 없는건지 제가 못찾은건지 바로 서버 생성하고 배포하는걸 보여주시는데 직접구현하는거는 어디서봐야할까요? 다른강의일까요?