묻고 답해요
121만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
loginProcessingUrl 절대경로 상대경로 차이점
3) Form Login 인증 강의처럼 코드 작성하였는데 로그인이 안되고 계속 /login 페이지로 이동해서 코드를 자세히 보니 경로 설정이 잘못되었더군요..loginProcessingUrl("/login_proc") 위 코드로 정상적으로 로그인이 되는데 경로를 슬래쉬를 붙이지 않고 'login_proc' 으로만 넣어주니까 로그인 먹통이었습니다.혹시 어떤 이유에서 그런지 문의드려도 될까요?아래처럼 태그를 보면 어차피 루트에서 이동하는건데 슬래쉬가 있고 없고의 차이점이 궁금하네요.감사합니다.<form class="form-signin" method="post" action="login_proc">
-
미해결스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
기본 DaoAuthenticationProvider사용시 인증객체 조회 에러
프로젝트를 다시 만들어 실습을 진행중에 있습니다.이번 프로젝트에서는 CustomAuthenticationProvider를 생성하지 않고 기본으로 사용되는 DaoAuthenticationProvider를 사용할려고 CustomAuthenticationProvider를 등록하지 않았습니다.그런데@GetMapping("/denied") public String accessDenied(@RequestParam(value = "exception", required = false) String exception, Model model) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Account account = (Account)authentication.getPrincipal(); model.addAttribute("username", account.getUsername()); model.addAttribute("exception", exception); return "user/login/denied"; }이 컨트롤러에서 인증 객체 조회가 되지 않아 에러가 발생했습니다.기존 프로젝트의 CustomAuthenticationProvider에서의 인증 로직이 끝나고 UsernamePasswordAuthenticationToken타입으로 인증객체가 return되고 이것이 SecurityContext에 저장되는 흐름과현재 진행중 프로젝트의 DaoAuthenticationProvider에서 인증 로직이 끝나고UsernamePasswordAuthenticationToken타입으로 인증객체가 return되고 이것이 SecurityContext에 저장되는 흐름이 완전히 동일하다고 생각되어서기존 프로젝트와 똑같이 컨트롤러에서 인증객체가 조회될 것이라고 생각했는데 그렇지 않습니다.혹시 인증 흐름상에서 제가 놓치고 있는 부분이 있는건가요?
-
해결됨스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
provider등록시에 우선권이 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.좋은 강의 감사합니다. 공부중에 궁금한게 있어서 글을 적습니다. CustomAuthenticationProvider는 현재 support로 UsernamePasswordToken인지 확인하고 있는데 DaoProvider의 경우에도 같은UsernamePasswordToken으로 검증하고 있던데 이런 경우 제가 등록한 provider가 더 우선권을 갖게 되어서 provider list를 순회 할때 custom provider가 더 먼저 지나가게 됨으로 daoprovider는 거치지 않는 것이 맞는건가요?또한 제가 등록한 custom provider는 parent로 daoprovider를 갖게 되는지도 궁금합니다.
-
해결됨스프링 프레임워크는 내 손에 [스프1탄]
23.Spring MVC02 버전 만들기(Ajax, jQuery)
SPringMVC01 폴더를 복사 후, SpringMVC02 폴더로 변경해서 강의 순서대로 실행을 했는데, Mapping 경로를 찾지 못하는 오류가 발생했습니다. 그래서 해결 방법으로 [appServlet] - [servlet-context.xml] 파일 안에 19번째 줄 기존의 파일 내용 일부분을 수정했습니다. 이렇게 해도 괜찮을까요 ? 다른 방법이 있으면 알고 싶어요 ㅠ[servlet-context.xml] - 수정 전 <resources mapping="/resources/**" location="/resources/" /> [servlet-context.xml] - 수정 <resources mapping="/assets/**" location="/resources/assets/" /> <resources mapping="/ad_assets/**" location="/resources/ad_assets/" /> a
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Loading descript for 문제
안녕하세요! 나프에 이어 스프 강의까지 열심히 따라 가고 있는 학생입니다.강의 따라 열심히 실습하고 있는데요, API 설치 이후 위와 같은 팝업이 계속 뜨고 있습니다. 혼자 해결해보려고 구글 검색해봤지만, 뭐가 문제인지 모르겠습니다. ㅠ서버도 잘 작동되서 화면도 띄어지고 콘솔창에도 아무 문제가 나오지 않는데, 어떻게 해결하면 좋을까요?
-
해결됨스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
csrf 토큰 시큐리티 6버전 변경사항
안녕하세요 강의 잘 보고있습니다. csrf 토큰 값을 헤더에 넣어서 실습하는 부분 따라해봤는데 잘 안되서 코드를 뜯어봤습니다.이번에 시큐리티 버전이 6으로 올라가면서 csrf 토큰을 인코딩해서 전달하고 이걸 디코딩하는 부분이 영상과 다른것같았습니다. 그래서 기본으로 제공하는 로그인 페이지에서 디버깅을 해보았는데 클라이언트에 전달한 csrf 토큰값이랑 실제 서버가 가지는 csrf 토큰값이 서로 달랐습니다. 이렇게되면 영상에서 보여주신 실습은 제대로 동작하지 않는게 맞나요?해당 사진은 CsrfFilter에서 actualToken을 받아오기 위한XorCsrfTokenRequestAttributeHandler 클래스 내부에 존재하는 resolveCsrfTokenValue 함수의 소스코드입니다.예제 따라하면 항상 마지막에 사이즈 비교하는 부분에서 걸렸습니다.
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
page의 값이 어디서 증가하는지 궁금합니다..
29강 - 리스트에 페이지 번호 구하기를 들으면서 이해가 안가는 부분이 있어 질의 드립니다.페이지 하단에 페이지번호 출력과 각 번호를 누르면 list?page=1, list?page=2 이런식으로 웹이 이동하는 방식 같은 전체적인 프로세스는 강의를 들으면서 이해가 잘되었습니다.한가지 이해가 안가는 부분이 있는데 제목에 작성한것처럼 page의 증가가 어디서 이루어지는지를 잘모르겠습니다.정상적으로 다 작동이 잘되고 디버깅을 이용해서 page가 1 - > 2 로 값이 정상적으로 들어가있는것도 확인하였습니다.코드를 전체적으로 검토를 해봤지만 page를 따로 증가시켜주는 코드는 찾지못했는데 어디서 증가가 되는건지가 궁금합니다 ㅠㅜㅠㅠ
-
미해결스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
순환 참조 오류 문의드립니다.
안녕하세요 강의 내용을 따라 코딩을 했는데 순환 참조 문제가 생겨 문의 드립니다.securityConfig와 AppConfig 설정에서SecurityResourceService를 생성하면서 생긴 문제인데요.깃허브에 강의 자료를 확인해보니 영상에서 설정한 로직과 securityConfig 로직이 많이 다르더라구요.임시로 application.properties에 spring.main.allow-circular-references=true 설정 하여 구동은 되지만 해결방법을 찾지 못하여 강사님께 도움을 요청 드립니다..
-
미해결스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
username뿐만 아니라 password까지 검증되는 이유
현재 강의까지의 인증 로직을 보면@Service @RequiredArgsConstructor public class CustomUserDetailsService implements UserDetailsService { private final UserRepository userRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Account account = userRepository.findByUsername(username); if (account == null) { throw new UsernameNotFoundException("UsernameNotFoundException"); } List<GrantedAuthority> roles = new ArrayList<>(); roles.add(new SimpleGrantedAuthority(account.getRole())); AccountContext accountContext = new AccountContext(account, roles); return accountContext; } }useranme으로만 Account객체를 조회해서 이것이 null인지 아닌지로 사용자를 인증하는 로직으로 이해했습니다.하지만 로그인 페이지에서 DB에 존재하는 username을 알맞게 입력하고 password는 틀리게 입력하면 인증단계에서 걸러지는걸 확인했습니다. 그렇다면 password까지 검증을 한다는 것인데..분명 인증로직으로만 봤을땐 username으로만 인증을 하는것 같았는데 password까지 검증될 수 있었던 이유가 무엇인가요.?
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
안녕하세요 유틸클래스 질문있습니다
보통 암호화하는 클래스들을 static 유틸클래스들로 만들었었는데 이런 static유틸클래스와 @Component를 달아서 사용하는 유틸클래스는 어떤 차이를 만들어낼수있는건가요..?제가 생각했을땐 유틸클래스를 스프링 빈으로 관리하겠다는 생각만 떠오르는데.. 이해할수있을만한 예시가있을까요..? 제가 못찾는건지 마땅히 그럴싸한 자료를 못봤던것같아서요 ㅠ강의도중 @Component얘기가 잠깐나와서 생각이나서 질문드려봅니다...
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
스프링부트 3.0.2 querydsl + rest docs + propoerties
스프링부트 3.0.2로 따라하고 계신분들을 위한 공유입니다.queryDSLimplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"Spring REST Docsext { asciidocVersion = "3.0.0" }버전을 3.0.0으로 지정application.propertiesspring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
영상에 나오는 브금 출처좀 알 수 있을까요?
노동요로 좋네요ㅇㅅㅇ
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
Interceptor 여러번 호출
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthInterceptor()); } }@Slf4j public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info(" >> preHandle"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info(" >> postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info(" >> afterCompletion"); } } 호출이 여러번 되는 현상이 발생합니다. preHandle 로그가 3번 찍혀요.검색하여 기본 + 2번 더 호출된다는 글을 보았으나, 제게는 해결책이 아니었습니다.(https://okky.kr/articles/598386)2번 더 호출 될 때에는 request.getParameter null로 넘어옵니다. (acceessToken까지 진행해보다가 롤백했어요 ... 이거부터 해결이 되어야해서 ㅠ.ㅠ)도와주세요 호돌맨님! (git 주소 가렸어요 ! :D)
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
질문이있어요
int result=memberMapper.register(m);이부분은 xml을보면 단순한 쿼리 인서트문장인데 result에 1과 0은 어디서 지정해준건가요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
QueryDsl 추가 과정에서 질문이 있습니다..
안녕하세요 선생님. Querydsl 설정하는 부분에서 질문이 있습니다.호돌맨님 강의영상처럼 똑같이 보고 따라했는데 제꺼에선 Q클래스를 인식하지를 못 하더라구요.제가 기존에 영한님 강의에 익숙해져서 빌드 도구를 gradle이 아니라 인텔리제이로 해놨었거든요.그래서 혹시 몰라 gradle로 바꾸니 이제 QClass가 잘 생성이 되네요.혹시 이 부분은 어느 키워드로 검색을 해야할까요..?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
PostCreate 기본 생성자 문제 질문드립니다.
우선 수업 잘 듣고 있습니다 호돌맨님! 많이 배우고 있어요 ㅎㅎ제목에서와 같이 PostCreate 부분에서 기본 생성자에 관해 질문을 드립니다. // @Setter @Getter @NoArgsConstructor // TODO: 왜 이게 꼭 있어야 하는 것일까? public class PostCreateDto { @NotBlank(message = "타이틀을 입력해주세요.") private String title; @NotBlank(message = "내용을 입력해주세요.") private String content; @Builder public PostCreateDto(String title, String content) { this.title = title; this.content = content; } }우선 이건 제 코드입니다. 보시면 제 코드에는 @NoArgsConstructor 어노테이션이 있는데요. 이 부분이 없으면 제 PostControllerTest에서는 테스트 실패가 뜨더라구요. 에러 메시지는 다음과 같습니다. Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.blog.request.PostCreateDto (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)에러메시지를 읽어보니 생성자가 없다는 문제 같아서 @NoArgsConstructor 어노테이션을 붙여보니 정상적으로 작동을 하더군요.이 부분이 궁금해서 찾아보니 RequestBody로 넘어오는 데이터를 맵핑할 때 Jackson의 ObjectMapper가 사용되는데 이게 RequestBody를 생성할 때, DTO가 Property기반이 아니거나 Delegate를 한 상태가 아니라면 기본 생성자로 생성한다 라고 나와있네요. (https://velog.io/@conatuseus/RequestBody%EC%97%90-%EC%99%9C-%EA%B8%B0%EB%B3%B8-%EC%83%9D%EC%84%B1%EC%9E%90%EB%8A%94-%ED%95%84%EC%9A%94%ED%95%98%EA%B3%A0-Setter%EB%8A%94-%ED%95%84%EC%9A%94-%EC%97%86%EC%9D%84%EA%B9%8C-3-idnrafiw)그리고 바인딩할 때 Setter가 없이도 자바 리플렉션을 통해서 DTO에 값이 들어간다고 하는 것도 이번에 알게 됐네요. 그래서 Setter를 지우고 Getter랑 @NoArgsConstructor 어노테이션만 붙이고 테스트를 돌려보니 통과가 잘 됩니다. 그런데 호돌맨님이 올려주신 코드를 보니 PostCreate 부분에 기본생성자가 없더라구요. 그런데도 테스트통과가 잘 되는 것을 보니까 신기하네요. 어떻게 그게 가능한 것인지 설명해주실 수 있나요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
mysql콘솔에서 오류가 발생하네요
mysql 콘솔을 실행하려고하면 사진과 같은 오류가 발생하네요 구글링에 있는거의다해봤는데도 안되어서 글남겨요
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
키보드 소리가 너무좋은데..
강의외적 질문이지만.. 혹시 어떤 키보드를 쓰고계신지 알수있을까요..? 소리가 너무 좋아서 악기같아요
-
미해결스프링부트 시큐리티 & JWT 강의
intelliJ jdk11 oauth로그인 에러 문제입니다.
안녕하세요 훌륭한 강의를 잘 듣고있는 학생입니다.다름이 아니라 제가 oauth로그인을 하면 오류가 발생하여 문의드립니다.우선 저는 jdk11과 Gradle을 사용하고있습니다.위와 같이 잘 작동하다가 아래와 같이 oauth로그인을 사용하면 에러가 발생합니다.Parameter 0 of method setFilterChains in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found.에러의 총 내용은 위와 같습니다.그래서 다른 질문들의 답변을 보니 라이브러리의 충돌 및 다운로드의 문제인거 같아 intelliJ에서 제공하는 invalidate cache기능을 사용하여 다시 재빌드를 하였지만 같은 에러가 발생하고 .\gradlew --refresh-dependencies를 사용하여 재빌드 또한 진행하였지만 같은 결과가 나왔습니다. 마지막으로 toolbox 및 인텔리제이를 다시 실행해도 같은 현상이 발생합니다. 혹시 방법을 알 수 있을까요??
-
미해결스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
WebSecurityConfigurerAdapter를 사용 못하는 경우
자유주제가 맞을 것 같은데, 보통 질문 찾아보실 거 같아서 해당 카테고리에 올려둡니다.작년 말, 스프링부트가 3.0 버전으로 올라오면서 WebSecurityConfigurerAdapter를 사용 못하게 된 것 같습니다.방법 1.build.gradle의 스프링 부트 버전을 2.7 이하로 낮추니 deprecated 상태로 쓸 수 있었습니다.방법 2.부트 버전을 낮추지 않고 3.0에서 쓰려면 아래와 같이 SecurityFilterChain을 Bean으로 쓰면 될 것 같습니다.참고: Spring Security without the WebSecurityConfigurerAdapter잘못된 내용이 있으면 댓글로 알려주세요!