묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
최신 스프링 시큐리티 - Ajax 로그인 시도 시 쿠키가 오지 않을 때 삽질 기록
증상### 로그인(일반 회원) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "user", "password": "1111" } ### 로그인(매니저) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "manager", "password": "1111" } ### messages 요청 GET http://localhost:8080/api/messages Content-Type: application/json X-Requested-With: XMLHttpRequesthttp 파일을 작성하고 로그인 요청에 성공했음에도 성공 응답 및 사용자 정보 dto가 오도록 했는데, 쿠키가 오지 않는 문제가 있었습니다.원인원인은 AbstractAuthenticationProcessingFilter 의 기본 SecurityContextRepository가 RequestAttributeSecurityContextRepository이기 때문입니다.그동안 폼 인증에서 우리가 세션을 통해 인증을 할 수 있었던 것은 스프링시큐리티가 기본적으로 등록해준 UsernamePassowordAuthenticationFilter가 저 SecurityContextRepository 구현체로 DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) 를 넣어줬기 때문입니다.또 우리가 AuthenticationSuccessHandler, AuthenticationFailureHandler를 커스텀하게 만들었다면 이를 수동으로 등록하는 코드를 작성해줘야하는 이유도 이와 같습니다. 기본 구현체가 위와 같기 때문입니다. @Bean fun ajaxLoginProcessingFilter(): AjaxLoginProcessingFilter { val filter = AjaxLoginProcessingFilter(objectMapper, authenticationManager()) filter.setSecurityContextRepository(securityContextRepository()) filter.setAuthenticationSuccessHandler(ajaxAuthenticationSuccessHandler()) filter.setAuthenticationFailureHandler(ajaxAuthenticationFailureHandler()) return filter } @Bean fun securityContextRepository(): SecurityContextRepository = DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) @Bean fun ajaxAuthenticationProvider() = AjaxAuthenticationProvider(userDetailsService, passwordEncoder()) @Bean fun ajaxAuthenticationSuccessHandler() = AjaxAuthenticationSuccessHandler(objectMapper) @Bean fun ajaxAuthenticationFailureHandler() = AjaxAuthenticationFailureHandler(handlerExceptionResolver) @Bean fun ajaxAuthenticationEntryPoint() = AjaxAuthenticationEntryPoint(objectMapper) @Bean fun ajaxAccessDeniedHandler() = AjaxAccessDeniedHandler(objectMapper)혹시 저처럼 최신 스프링 시큐리티 환경에서 실습하시면서http 요청 실습에서 로그인 시 쿠키가 전송 안 되시는 분들은 이 작업을 해보시길 바랍니다.SecurityContextRepository 구현체를 생성하여, 등록해보시는 것을 추천드립니다.
-
해결됨
mapStruct dto > entity 변환시 오류
위 dto를 entity로 변환할때 fun toEntityCreate(dto: RequestVocBoardDto.CreateVocBoard): VocBoardEntity 을 사용해서 변환하는데 변환이 정상적으로 되지않고 dto가 다시 리턴됩니다.. 혹시 이유를 아시는분이 계시다면 알려주세요 ㅠㅠ data class CreateVocBoard( @Schema( description = "VOC 카테고리" ) var cateSeq: RequestVocCategoryDto? = null ) data class RequestVocCategoryDto( @Schema( description = "일련번호", example = "1" ) var cateSeq: Long? = null ) ------------------------------------------------------------------- @Entity @Transactional @Table(name = "voc_board") class VocBoardEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "voc_seq", nullable = false) val vocSeq: Long? = null @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "cate_seq") val cateSeq: VocCategoryEntity? = null } @Entity @Transactional @Table(name = "voc_category") data class VocCategoryEntity( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "cate_seq", nullable = false) var cateSeq: Long? = null, @OneToMany( mappedBy = "cateSeq", targetEntity = VocBoardEntity::class, cascade = [CascadeType.ALL], fetch = FetchType.LAZY ) var vocBoards: List<VocBoardEntity>? = mutableListOf() )
-
해결됨스프링 핵심 원리 - 기본편
테스트 폴더 compact middle packages
main 폴더에서는 compact middle packages이 잘 적용되어서 hello.core 로 나와있는데 test폴더에서는 compact middle packages가 적용되어 있지 않습니다 해결 방법이 있나요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
http-go 이미지는 몇 강에서 확인할 수 있을까요?
섹션 4에서 포드 디스크립터 작성을 보는 중에 go-http-pod.yaml 파일을 작성하셨는데kubectl create -f go-http-pod.yaml 명령어 실행 후kubectl get pod http-go를 실행하니 Status가 ImagePullBackOff 로 나옵니다.강의 영상에서는 저번에 만들어두셨다고 하셨는데 어떤 강의에서 이미지를 확인할 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
모법단안에서 질문이있습니다.
언제나 좋은 최상의퀄리티 수업을 듣고있음에 감사합니다.모법답안에서 질문이있는데요 의상이름과 종류 입력받을때 중간에 공백이 존재하는데 getline안써도 무방한가요?감사합니다 좋은하루보내세요
-
미해결AWS Certified Advanced Networking - Specialty 자격증 준비하기
수강 연장 부탁드립니다.
associate 자격증 따고 ans 자격증을 도전해보려고 합니다.해당 수강 연장하여 다시 들어보고 싶은데 수강연장 가능할까요 ?
-
미해결스프링 핵심 원리 - 기본편
log DEBUG 모드로 어떻게 하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]13분 05초 처럼 로그를 보고 싶은데 DEBUG 로그레벨로 설정을 어떻게 해야하는지 모르겠습니다.다른 분들 찾아보니 logback.xml 이라는 파일도 있는 것 같던데 저는 그 파일이 아예 없네요!
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
axios url 질문이 있습니다
안녕하세요 강사님, 현재 태그를 누르면 포스트 목록 페이지 이동까지 구현을 성공한 상태입니다. (섹션 11에 올려주신 메인메뉴 수정 참고해서요 !)섹션 11 영상이 아니라 앞서 설명해주실 때에는 장고서버에서 설명해주셨어서 (?) 약간 헷갈리는 부분이 있는데,제가 이해하고 있는 게 맞는지 여쭤보고싶어서 질문 드립니다 !!postdetail.vue 에 내용에 의해serverPage(tagname) { console.log("serverPage()...", tagname); location.href = `/my_blog.html?tagname=${tagname}`; }이렇게 태그를 누르면 `/my_blog.html?tagname=${tagname}`; 로 이동하게 해놨는데, (저는 ~/my_blog 에 postlist 컴포넌트를 위치시켜놔서 url 이 저렇습니다 !)이러면 postlist.vue 에서 저 url 을 파싱해서created () { const params = new URL(location).searchParams; // const paramTag = params.get('tagname'); this.tagname = params.get("tagname") this.fetchPostList() },tagname 을 추출하는 것까지는 이해 했습니다 !그 후에 fetchPostList() { console.log("fetchPostList()...", this.tagname); // 메서드 이름을 콘솔에 로깅하여 메서드가 호출되는 것 확인 let getUrl = ''; if (this.tagname) getUrl = `/api/post/list/?tagname=${this.tagname}`; else getUrl = '/api/post/list/'; axios.get(getUrl) // axios를 사용하여 /api/post/list/로 HTTP GET 요청 보내기 .then(res => { // 성공적인 응답의 경우 then 부분 실행 // 서버로부터 받은 응답 데이터 는 res 매개변수 안에 console.log("POST LIST GET RES", res); // 서버 응답을 콘솔에 로깅 this.posts = res.data; // res.data 에 서버에서 받은 데이터가 있을 것 // 이 데이터를 Vue 컴포넌트의 this.posts 데이터 속성에 할당 axios 를 통해 해당 태그에 맞는 데이터를 가져오는 것으로 이해 했습니다. 근데 여기서 getUrl = `/api/post/list/?tagname=${this.tagname}` 부분이 약간 이해가 안되어서요.urlpatterns = [ path('post/list/', views.ApiPostLV.as_view(), name='post_list'), path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), path('tag/cloud/', views.ApiTagCloudLV.as_view(), name='tag_cloud'), ]django 에서 api 에 관련된 url 은 이렇게 지정을 해두었는데, post list 에서 특정 포스트를 누르면 해당 포스트의 id를 추출해서 axios 를 통해 요청하는 url은 axios.get(`/api/post/${postId}/`) 이잖아요. 이부분은 위의path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), 에서 <int:pk> 에 id 가 들어가는 거로 이해가 됩니다.그런데 태그에 대한 목록 부분은, api/post/list 뒤의 부분은 정의(?)를 안해두었는데, 어떻게 오류없이 저 url 뒤의 태그를 알아서 인식하고 해당 태그에 대한 데이터를 보내주는 것인지 궁금합니다. 감사합니다 :)
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
<ul class="gnb"> <div class="wrap"> 차이
<ul class="gnb"> <div class="wrap"> 차이무엇입니까?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
질문이 있습니다 ㅠ(해결됨)
계속 이부분에서 오류가 나는데, 오류 설명이 이렇습니다.어떻게 해결해야 할까요..lib/common/provider/go_router.dart:15:24:Error: The argument type 'String? Function(GoRouterState)' can't be assigned to the parameter type 'FutureOr<String?> Function(BuildContext, GoRouterState)?'.- 'GoRouterState' is from 'package:go_router/src/state.dart' ('../../AppData/Local/Pub/Cache/hosted/pub.dev/go_router-12.0.1/lib/src/state.dart').- 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/framework.dart').redirect: provider.redirectLogic,^Restarted application in 587ms. ------------------------------------------------------위부분의 문제를 redirectLogic을 타고들어가 기존 제너릭 앞에 buildContext context를 넣어주니 오류는 사라졌습니다. 그런데 앱실행 후에 또 다른 문제가 발생했습니다;화면은 계속 이 상태에 머물러 있고, 에러는 이렇게 뜹니다. 이건 어떻게 해야할까요ㅠㅠ[ERROR:flutter/runtime/dart_vm_initializer.cc(41)]Unhandled Exception: DioException [bad response]: The request returned an invalid status code of 401.E/flutter (13865): #0 DioMixin.fetch.<anonymous closure> (package:dio/src/dio_mixin.dart:507:7)E/flutter (13865): #1 _RootZone.runUnary (dart:async/zone.dart:1661:54)E/flutter (13865): #2 FutureListener.handleError (dart:async/futureimpl.dart:174:22)E/flutter (13865): #3 Future._propagateToListeners.handleError (dart:async/future_impl.dart:852:47)E/flutter (13865): #4 Future._propagateToListeners (dart:async/future_impl.dart:873:13)E/flutter (13865): #5 Future._completeError (dart:async/future_impl.dart:649:5)E/flutter (13865): #6 SyncCompleter.completeError (dart:async/future_impl.dart:60:12)E/flutter (13865): #7 Completer.completeError (dart:async/futureimpl.dart:26:5)E/flutter (13865): #8 Future.any.onError (dart:async/future.dart:620:45)E/flutter (13865): #9 _RootZone.runBinary (dart:async/zone.dart:1666:54)E/flutter (13865): #10 FutureListener.handleError (dart:async/futureimpl.dart:171:22)E/flutter (13865): #11 Future._propagateToListeners.handleError (dart:async/future_impl.dart:852:47)E/flutter (13865): #12 Future._propagateToListeners (dart:async/future_impl.dart:873:13)E/flutter (13865): #13 Future._completeError (dart:async/future_impl.dart:649:5)E/flutter (13865): #14 Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:739:7)E/flutter (13865): #15 microtaskLoop (dart:async/schedulemicrotask.dart:40:21)E/flutter (13865): #16 startMicrotaskLoop (dart:async/schedulemicrotask.dart:49:5)일부 서치글을 통해 에뮬레이터 앱을 지우고 새로 여니 로그인화면으로 넘어갔습니다! 이 문제는 해결됐습니다~
-
미해결스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
authenticationEntryPoint 질문
굳이 authenticationEntryPoint 에 들어갈 내용을 CustomREsponseUtil 로 빼는 이유가 무엇인가요 ??실무에서는 따로 뺄 만큼 들어가는 내용이 길어지나요 ? ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
error Message null
error message 가 null로 표기되네요 분명히 404 오류! 메시지가 포함이되어있는데 스프링 3.0이상과 2.5버전이 달라서 그런건가요 ?
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
회차 강의pdf파일 보는 방법이 없나요?
회차 강의pdf파일 보는 방법이 없나요?분명히 학습자료를 받아서 볼 수 있다고 되어있는데, 노트와 어디에서도 파일을 받아서 볼 수 있는 것이 없습니다.내용을 프린트 해서 볼 수 있는 방법이 있을까요?답변부탁드립니다.
-
해결됨웹 애니메이션을 위한 GSAP 가이드 Part.02
[3D 텍스트효과(2)] GSAP을 위한 애니메이션 Timeline flow"기획", 이렇게 하면 될까요?
안녕하세요,애니메이션 Timeline을 기획(정의)하는 법(방식)?에 대해 문의드립니다! 섹션, "3D 텍스트효과(2)" 에서인터벌 단위로,duration, stagger, pause, 각각의 value 계산 법을 알려주셨는데요 강좌에서 나온 예시 SVG 이미지 보면서,저렇게 애니메이션을 정의하면 되겠다,인사이트를 얻었습니다. 문득, 범쌤께서는 어떻게 애니메이션 flow를 정의 하시는지,관점이나, 포인트가 궁금해졌습니다!(이미 강의에서 SVG 이미지로 보여주셨지만, 혹시 더 있을까봐서요,,,) 강의 내용처럼,애니메이션을duration,stagger,pause,delay 단위로 배치하면, GSAP을 적용하는데 용이 하다 라고 이해하면 될까요?! 블럭 맞추듯 척척, 애니메이션이 구현되는 과정이 신기하네요! 감사합니다!
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker build ./ 했는데 이미지 ID가 안나옵니다
mac os m2 모델을 사용하는데, 질문게시판에 있는대로 buildkit 부분을 건드리려고 설정에서 Docker Engine에 들어가니, 해당부분이 저는 없더라구요. 찾아봐도 이에 대한 언급은 없는데, m1/m2 mac silicon 도커에서는 이미지 Id를 다른 방식으로 찾아야하나요?
-
미해결
고객센터통화가안되네요
운영관련 문의는 챗봇만되고 전화는 시간대별로 총 30번했는데 다안받아서 여기에올립니다. 회사제출때문에 그러는데 미환급증명서같은것도 발급되나요? 회사에서 지원되는 부분이있어서 이중환급이슈때문에 발급이필요한것같습니다.
-
미해결파이썬 무료 강의 (활용편5) - 데이터 분석 및 시각화
결측치 조건 질문있습니다!
자료에서 학교 column을 NaN 으로 바꾼후'1번' : '6번' row의 '학교'column 의 Nan만 '모름'으로 바꾸고싶어import pandas as pd import numpy as np df = pd.read_csv ( 'score.csv , index_col = '지원번호) df['학교'] = np.nan df.loc['1번':'6번' , '학교'].fillna('모름,inplace = True) 로 해보았는데요 전체 데이터프레임에서 NaN 값이 변화 하질 않네요 이런방식으로 조건걸어 바꾸는건 불가능한가요?
-
미해결UX/UI 시작하기 : Figma 입문 (Inflearn Original)
우측 도구창에
픽스포지션이 안뜹니다 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터베이스 가 접속이 안되어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. Database "C:/Users/mukim/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-224] 90149/90149 (도움말)이렇게 나와요 뭘 어떻게 해야하나요?
-
미해결스프링 핵심 원리 - 기본편
섹션4질문입니다.
스프링 컨테이너와 스프링 빈스프링 컨테이너 생성 3분에서 이 클래스는 어플리케이션컨텍스트 인터페이스의 구현체이다. 라고 나와있는데요. 구현체가 무슨의미인가요?