묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
개인 깃허브에 코드 업로드 관련
안녕하세요, 우선 좋은 강의 업로드해주셔서 감사합니다.다름이 아니라 강의를 보면서 공부하며 친 코드들을 깃허브나 블로그에 개인 공부 기록용으로 공개 업로드해도 될지 질문드리고 싶습니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
CSRF 통합 GIT 주소 오류
안녕하세요. 좋은 강의 감사드립니다.다만 강의자료에 CSRF 통합 챕터 깃 주소를 들어가면 아래와 같이 404 에러가 발생합니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
브랜치 주소가 표시되지 않습니다.
'각 강의 브랜치 주소는 챕터가 시작하는 화면 하단에 표시되어 있으니 참고하여 주시기 바랍니다.' 라고 하셨는데, 화면 하단에 어디에 있는지 모르겠습니다. 해당 화면에 대해서 스크롤도 안되고, 메모같은 것도 없어서 현재는 github 를 뒤지면서 보고 있는데, 명확한 가이드를 주실 수 있나요 ? 깃허브에 뒤져가면서 보더라도 숫자-내용basic-내용 형태의 브랜치들 밖에 없다보니 뭘 봐야할지 헷갈립니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
WebUtil 관련
WebUtil이 지원하지 않는거 같은데 맞을까요?(WebUtils만 보이네요)
-
미해결스프링부트 시큐리티 & JWT 강의
13:23 system.out 출력문이 다르게 나옵니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 내용처럼 userDetails : User(id=1, username=ssar, , 이렇게 뜨지 않고 아래와 같이 출력됩니다.userDetails : com.myproject.BasicBoard.entity.User@2c6c7d57 getDetails.getUser() authentication 출력문도 마찬가지입니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
@AuthenticationPrincipal AccountDto 관련
실제로 UserDetails를 구현하고 있는 건 "AccountContext" 이지 "AccountDTO"가 아니기 때문에, @AuthenticationPrincipal AccountDto accountDto를 하면 null이 반환될 수 있지 않나요?그래서 차라리 @AuthenticationPrincipal AccountContext accountContext를 해서 if (accountContext != null) { model.addAttribute("username", accountContext.getUsername()); } else { model.addAttribute("username", "비회원");}이렇게 하는게 더욱 올바른 방법이 아닌가요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.location.href = /api/logout 를 통해스프링 시큐리티로 logout 보내고 세션 삭제한 뒤 브라우저를 보면 login?logout이 찍힌걸 확인 할 수 있는데login으로 어디서 보내준건지 헷갈립니다..
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
백엔드 개발자가 프론트 지식 얻을 때 필요한 방향성 질문
저는 비전공자로 지금 html,css javascript에 대한 기본적인 지식을 갖고있으며스프링을 응용하여 블로그정도의 웹 페이지를 만들 수 있는 수준이라고 생각합니다하지만 최근 기업 트렌드를 보면 백엔드 개발자만을 원하는 것이 아닌 풀스택개발자를 원하는 것이 추세인것 같습니다. 이 추세에 대비하기위해 어떤 언어를 최우선적으로 학습해야할지 궁금합니다. ex)node.js,next.js, was , docker...개발자로 성장하기 위한 방향성을 알려주시면 매우 감사드립니다.
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
로그인 후 Token 발행 시 postman 에러메시지
안녕하세요. 본 수강 열심히 잘 듣고있습니다~ 감사합니다.제가 Postman으로 로그인하고나서 Token을 발행할 시에 postman에 테스트해본 결과 결과코드는 SUCCESS라고 나오고 data에도 Bearer에 토큰이 들어간것을 확인하였습니다. 그러나 메시지에는 정상완료가 아닌 에러가 발생했다고 해서 제가 아무리 코드를 확인하였지만 어디부분에서 잘못된건지 확인이 힘들었습니다. 사실은 선생님께서 보내주신 파일을 업로드안하고 강의보면서 제가 직접 코드를 타이핑쳤었는데 손코딩을해서 그런지 오타가 있을 것으로 사료됩니다. 불가피하게 파일을 덮어씌우는게 좋을까요?
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
수강하는데 얼마나 걸릴까요
안녕하세요. 수강해보려고 하는데, 최대한 빠르게 끝내보고 싶습니다.c++ 문법 정도만 알고 있는 수준인데, 공부 기간은 얼마 정도로 예상하시나요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
SecurityContextHolder 는 DTO 같은 개념일까요?
강의를 다시 복습하니, SecurityContextHolder 가 지연로딩을 해 주는 역할도 하지만 다른 필터에 SecurityContext를 전달하는 DTO 같은 역할을 하는 것 같다고 느꼈는데 선생님 생각은 어떠신가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
9분 50초경 default 접근제어자의 이유
선생님 , 안녕하세요. 강의 잘듣고 있습니다!질문이 있어서 글남기게 됩니다! 이번 강의 9분 50초 정도에 AuthoriationManger 인터페이스는 접근제어자가 public으로 되어있는데, 하위 메서드인 verify는 접근제어자가 default로 되어있습니다! 위의 이유가 궁금합니다. AuthrozationManager 와 같은 패키지내의 클래스에서만 verify 메서드에 접근 가능하도록 제한을 두기 위한 것인지 아니면 다른 이유가 있는지 궁금합니다.답변 부탁드리겠습니다! 항상 좋은 강의 감사드립니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
DefaultHttpSecurityExpressionHandler 가 스프링 컨테이너를 필드값으로 가지는 이유가 뭔가요?
강의 중간 (18: 15)에 커스텀 ExpressionHandler를 만들기 위해 setApplicationContext() 로 스프링 컨테이너를 필드값으로 set 했는데 스프링 컨테이너가 필요한 이유가 무엇인지 궁금합니다.
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
junit Test에서 오류는 나지 않지만 결과가 다르게 나오네요
안녕하세요 초기 egov에서 받을 때 최신인 5.3.6버전을 받아서 그런지 초기 DataSourceTest에서 @RunWith는 jUnit4버전을 가리키고 저는 5.3.6버전의 spring을 이용했어서인지 SpringJunit4ClassRunner.class가 import 되지 않아 난항을 겪던 중 pom.xml의 버전을 강사님처럼 5.0.7 RELEASE 버전으로 수정하면서 chat gpt의 도움을 받아 DataSourceTest의 테스트를 실행할 수 있었습니다. 그러나 console에서 연결이 되었다는 메세지도 없으며이를 이상하게 여기고 root-context.xml에 기입된 비밀번호를 강사님처럼 일부러 틀리게 한 후실패를 기대한 상태로 run을 돌렸지만, jUnit에 Failures가 뜨지도 않습니다..혹시 이런 경우에도 방법이 있을까 하여 코드도 함께 첨부합니다.. (pom.xml은 다른 글에 올려주신 참고 블로그의 것을 인용했습니다.) [pom.xml]=> 10000자를 올릴 수 없다하며 노션 링크를 첨부하겠습니다!https://devfighting.notion.site/18410212999180b5b0a9cd4ada3a6a58?pvs=4 [console결과, jUnit 결과] [maven dependencies]
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
anonymousAuthenticationFilter 와 AuthorizationFilter 의 로직 순서
SecurityFilterChain 의 순서를 보면 AnonymousAuthenticationFilter 가 먼저이고 AuthorizationFilter 가 맨 마지막에 실행되는 것을 확인했습니다. Anonymous 강의에서 AnonymousAuthenticaionFilter는 authentication이 null 인 경우 AnonymousAuthenticaionToken을 생성하여 익명 사용자로 처리한고 Authentication이 null이 아닌 경우 doFilter()로 다음필터로 넘어간다고 하셨는데.오늘 강의를 보니 anonymousAuthenticationFilter 에는 authenticaion 이 있는지 확인을 하지 않고 authorizationFilter 에서 getContext().getAuthentication() 을 통해 유무를 확인후 없다면 다시 AnonymousAuthenticationFilter 를 통해 AnonymousAuthenticationToken을 생성시켜 할당하는 것 처럼 보이는데 맞을까요?즉 anonymousAuthenticationFilter doFilter() --> AuthorizationFilter getAuthentication() --> anonymousAuthenticationFilter에서 생성
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
InvalidUrl과 expiredUrl이 동시에 설정되있을때 Invalid가 우선되는 이유
강의를 듣다가 궁금해서 좀 찾아봤습니다(Perplxtiy에게 물어본거라 신뢰도가 100%는 아닙니다) 만료된 세션을 처리하려면 expiredUrl 설정이 필수여서 invalidUrl 설정 단독으로는 처리를 못한다고 합니다 그럼 2개가 다 설정되도 expiredUrl을 타는게 맞는것 같지만 Filter chain의 우선순위때문에 expiredUrl을 즉 만료된 세션을 invalidUrl로 간주하고 invalidUrl이 실행되는 것 같습니다
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
SecurityContext가 anonymous 를 판단하는 기준은 jsession 에 있을까요?
해당 강의를 학습하던 도중 indexController 의 다음 메서드가 어떻게 익명사용자인것을 알아채고 해당 토큰을 남기는 걸까 의문점이 생겨 질문을 남깁니다. @GetMapping("/anonymousContext") public String anonymousContext(@CurrentSecurityContext SecurityContext context) { return context.getAuthentication().getName(); } 해당의문을 해결하기 위해 localhost:8080/anonymousContext 가 호출될 때 서버는 어떤 과정을 거칠까 생각해보고 다음과 같은 결론을 냈습니다. 1. localhost:8080/anonymousContext 가 호출될 때, Authentication 이 null 값인 것을 확인한다2. AnonymousAuthenticationToken을 생성하여 SecurityContextHolder에 저장한다.3. Jsession이 없는 것을 확인하고 AnonymousAuthenticationToken이 저장된 SecurityContext를 파라미터로 넘긴다.4. 해당 포큰이 getName() 값이 출력된다.이러한 과정을 거칠거라 생각한 이유는 로그인 상태에서 localhost:8080/anonymousContext 를 호출하게 될 때, "user"라는 값이 출력되는 것을 확인했고 두 같은 요청값에 유일한 차이는 쿠키에 Jsession의 유무였기 때문입니다. SecurityContext가 anonymous 를 판단하는 기준이 제가 생각한 것과 같을까요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
API키 관리 궁금해요.
ajax로 API통신을 할 때 키값을 하드코딩하면 클라이언트에게 노출이 되지 않나요? 관리방법이 어떤게 있을까요?생각하고있는건, properties에 등록하고, 서비스로직에서 가져와 보내는걸 고려하고있습니다.다른분께 얼핏 듣기로는 실무에서는 AWS에서 가져온다는데, 그건 어떤 방법일까요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
SpringMvc 프로젝트가 없는 상태로 작업 중인데 처음부터 막힙니다..
강사님을 따라서 작업 중이지만 프로젝트 생성 부터 SpringMVC 프로젝트가 없다는 것을 알게 되었고그 중에 한 학생분에게 주신 조언대로(질문&답변에 달아주신) eGov Web Project 생성 후 필요한 부분인 servlet-context.xml , home.jsp, HomeController, web.xml, root-context.xml 등을 생성하여 작업하였습니다. 최종적으로 이런 화면이 나오는데 좀 더 구체적으로 상세하게 어떤 식으로 프로젝트를 생성해야할지 안내해주시면 감사하겠습니다ㅠㅠ
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
생성된 SecurityFilterChain 빈을 SecurityBuilder 에 저장하는 원리가 궁금합니다.
강의에서 SecurityBuilder를 통해 생성된 SecurityFilterChain 을 저장한다는 설명과 관련해서 어떤 코드가 실행하는지 분석을 나름 해보았는데요, 맞는지 확인받고 싶습니다. WebSecurityConfiguration 클래스에 springSecurityFilterChain() 메서드에 다음과 같은 코드가 있습니다.for(SecurityFilterChain securityFilterChain : this.securityFilterChains) { this.webSecurity.addSecurityFilterChainBuilder(() -> securityFilterChain); }해당 코드에서 addSecurityFilterChainBuilder() 메서드는 SecurityBuilder<O extends SecurityFilterChain> securityFilterChainBuilder 를 파라미터로 받고 있는데,해당 파라미터로 람다식을 이용해서 HttpSecurity에서 생성한 객체를 SecurityBuilder의 build() 메서드를 호출시 리턴할 수 있게 () -> securityFilterChain 했고 해당 람다식이 addSecurityFilterChainBuilder() 메서드로 인해 WebSecurity 필드인 securityFilterChainBuilders 에 저장이 되었습니다.저장된 람다식은 WebSecurity 에 performBuild() 메서드에 구현되어 있는 for(SecurityBuilder<? extends SecurityFilterChain> securityFilterChainBuilder : this.securityFilterChainBuilders) { SecurityFilterChain securityFilterChain = (SecurityFilterChain)securityFilterChainBuilder.build();다음과 같은 for 문에서 build() 메서드를 호출하면서 SecurityFilterChain 객체를 불러오게 됩니다. 다음과 같은 과정으로 SecurityBuilder 에 저장하고 꺼낼 수 있다고 이해했는데 맞을까요?