묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
1 : N 필드 `memberRole` 에 @OneToMany 옵션 cascade 미사용, 컬랙션 null 초기화 에 대한 질문입니다.
class Member( ... ) { @OneToMany(fetch = FetchType.LAZY, mappedBy = "member") ⬅️Q1:"cascade 없음 이유" val memberRole: List<MemberRole>? = null ⬅️Q2: "null 초기화"(mutableListOf() 누락) } Q1:cascade 미사용:강의 컨샙에 맞춰 쉬운 예제 구성을 목적으로 컬랙션 필드에 Cascade 설정을 안하신게 아닐까 추측했지만, 한편으로 다른 구현방법에 대한 다른이유가 있으신 것인지 강의에 언급되지 않은 부분을 여쭤보고 싶었습니다.Q2:컬랙션 null 초기화:일반적인 JPA 예제에서는 JpaEntity 의 1:N 관계 필드는 Collection 초기화를 하더라구요. null 로 초기화 할 때의 장점 이라던지, 다른 이유가 있는지 궁금해서 남기게 되었습니다. 읽어주셔서 감사합니다.
-
미해결스프링 시큐리티
ajax 요청 응답에 대한 문의
안녕하세요 3) 인증 처리자 - AjaxAuthenticationProvider 수업에서 ajax 요청 날린 뒤 응답이 <Response Body is Empty>가 안뜨고, HTML 파일(정상적인 home 화면)이 응답되는 현상이 있습니다. https://github.com/kickhen/springsecuritypractice/tree/master 왜 저는 html이 리턴되는건지 무엇을 빼먹었는지 궁금합니다. 알려주시면 감사하겠습니다.
-
해결됨스프링 시큐리티
SecurityConfig에서 사용하는 빈 주입 방식 질문
안녕하세요 3) 인증 처리자 - AjaxAuthenticationProvider 수업 듣던중 질문 남깁니다. SecurityConfig에서 어떤건 @Component로 빈 생성한 뒤에 Autowired로 주입받고(ex)CustomAuthenticationSuccessHandler ), 어떤건 @Component 안달고 직접 new 생성자 호출해서 @Bean 어노테이션으로 빈 등록을 하고 계시는데 (ex:CustomAuthenticationProvider 또는 FormAuthenticationProvider) 빈 주입하는 방식이 다른 이유가 궁금합니다. 일단 제가 해봤을 때 CustomAuthenticationProvider 에 @Component를 달면, SecurityConfig에 @Bean으로 등록한 PasswordEncoder 관련해서 빈 생성이 꼬이게 되는 것은 확인했는데요 단지, @Component를 달아보니까 꼬이더라 라는 이유를 넘어서서, SecurityConfig에서 사용하는 Bean을 주입하는 방식에 대해 구분하는 기준이 있다면 가르쳐주시면 감사하겠습니다.
-
미해결스프링 시큐리티
FilterSecurityInterceptor deprecated
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. FilterSecurityInterceptor deprecated 가 돼서 AuthorizationFIlter 를 사용하라고 해서 @Bean 으로 등록하려고 했습니다. @Bean public AuthorizationFilter authorizationFilter() throws Exception { AuthorizationFilter filter = new AuthorizationFilter(authorizationManager(authenticationConfiguration)); filter.set } 여기서 setSeucirtyMetadataSource 같은 메서드가 없어서 어떻게 해야할지 잘 모르겠습니다...
-
미해결스프링 시큐리티
Ajax 로그인 질문 있습니다
Ajax 로그인 시도 시강사님과 다른 방식으로 응답이 오는데정상적으로 작동한 것이 맞는지 궁금합니다.
-
미해결스프링 시큐리티
다중 필터 구현 시, antMatchers 사용
예제에서는 antMatcher('/admin/**') 이런식으로특정 url 하나만 지정을 했는데혹시 '/user/**' 도 같이 Match 시키고 싶은데antMatcher 는 1개만 처리해주는 것 같습니다.꼭 새로운 FilterChain 을 생성해서 설정해야하나요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
안녕하세요 호돌맨님 예외처리2 에서 질문이 있습니다.
좋은 강의 정말 감사드립니다.호돌맨님 강의덕분에 기존에 공부했던 지식들 정리도 하고 더 좋은 설계가 어떤건지 잘 배우고 있습니다.제가 예외처리2 강의를 보고 컨트롤러 테스트를 하다가 게시글 작성 실패케이스에서 오류가 생겨서 질문드립니다. PostControllerPostCreatePostControllerTest글 작성 요청 시 제목, 내용 모두 null 인 케이스 테스트입니다.이 테스트에서 실패합니다.로그는 아래와 같습니다.응답 바디에도 아무것도 오지 않습니다.로그를 쫓아서 ErrorResponse 에 브레이크 포인트를 찍어봤습니다. ErrorResponse여기서 validation 이 null로 잡힙니다.PostControllerAdvice이쪽 ExceptionHandler 작성할 시점에 생성자에 validation 을 매개변수로 받지 않았을땐 오류가 발생하지 않았는데 validation 을 매개변수로 받고 나서 오류가 생기는거면 @Builder 가 ErrorResponse 의 validation 초기화를 무시하고 null 값으로 생기는 현상 같습니다.그래서 따로 빌더 안붙인 validation 을 받지 않는 생성자를 만드니 잘 돌아갑니다.그런데 강의 마지막에 전체 테스트 한번 돌리고 마무리 하신것 같은데 호돌맨님은 어떻게 테스트 실패가 안뜬건지 궁금합니다. 그리고 혹시 더 좋은 방법이 있는지 방향을 알려주시면 감사하겠습니다.
-
미해결스프링 시큐리티
커스텀 필터 등록 시, ApplicationFilterChain 에 등록
안녕하세요 강의 잘 듣고 있습니다! SecurityConfig에서 커스텀 필터 등록 시 @Bean 형식으로 필터객체를 생성하여 등록하면 ApplicationFilterChain에 등록되는게 맞는걸까요? Bean 만 선언한다면 ApplicationFilterChain 에 등록되고addFilter(customFilter) 를 추가해주면 ApplicationFilterChain 리스트에도 등록되고SecurityFilterChain 에도 등록이 됩니다.문제는 제가 만든 커스텀 필터는, 특정 URL 에서는 동작 안하게끔 구현하고 싶은데@Bean으로 등록했기 때문에 ApplicationFilterChain에 등록되어 어떤 요청이 들어오든 동작하는 게 문제입니다. @Bean 방식이 아닌addFilter(New CustomFilter()) 로 하면 SecurityFilterChain에만 등록되긴 하는데 CustomFilter 는 스프링 컨테이너에 등록이 안되기 때문에 다른 Resource 객체들을 주입받지 못하는 상황입니다.결론은 ApplicationFilterChain에는 추가 안하고 SecurityFilterChain에만 커스텀 필터를 추가하고 싶은데 New 방식 말고는 없는 것인지가 궁금합니다!
-
해결됨스프링 시큐리티
스프링부트3.1 / 시큐리티6.1 관련하여 문의드립니다.
http.authorizeRequests() .requestMatchers(new AntPathRequestMatcher("/")).permitAll() // 기본 경로는 로그인을 안하고도 볼 수 있어야함 .requestMatchers(new AntPathRequestMatcher("/mypage")).hasRole("USER") //유저 권한이 있는 사람만 접근 가능 .requestMatchers(new AntPathRequestMatcher("/messages")).hasRole("MANAGER") .requestMatchers(new AntPathRequestMatcher("/config")).hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin(); return http.build(); @Bean static final public InMemoryUserDetailsManager kk() { //DB연동을 안할 경우, 테스트 용으로 하는 것이다. UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("1111") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("1111") //.roles("ADMIN","USER") .roles("ADMIN") .build(); UserDetails manager = User.withDefaultPasswordEncoder() .username("manager") .password("1111") .roles("MANAGER") .build(); return new InMemoryUserDetailsManager(user, admin, manager); // 아래는 컨트롤러 입니다. @GetMapping("/") public String getInts() { System.out.println("path: / /n"); return "index"; } @GetMapping("/mypage") public String getInt23() { System.out.println("path: /mypage /n"); return "index"; } @GetMapping("/config") public String getInt45() { System.out.println("path: /config /n"); return "index"; } 안녕하세요 해당 config파일 설정에 의하여 프로젝트는 문제 없이 잘 돌아가고는 있습니다.하지만, 초기 경로 "/" 으로 갈때에는 모두 허용이라는 permitAll()이 작동하기 전에 무조건 시큐리티 내장 "/login" 페이지로 이동 후, 아이디/비밀번호 입력시 "/" 경로를 타게 됩니다. /login을 거치지 않도록 하기 위한 방법이 있을까요? https://drive.google.com/file/d/1DljHlHOwmlCuiFrCh5NMB5TfYhMh23Bj/view?usp=sharing해당 링크는 크롬 브라우저에서 페이지 테스트한 영상입니다!!
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
47강 강의 내용관련 질문이 있습니다.
47강 회원정보 수정부분에서 session을 왜 추가적으로 넣어주어야 하는지 궁금합니다. 로그아웃 하기 전에 세션은 사라지지 않는 것 아닌가요?
-
해결됨스프링부트 시큐리티 & JWT 강의
@EnableGlobalMethodSecurity(securedEnabled = true)
@EnableGlobalMethodSecurity(securedEnabled = true)만 작성해줘도 PreAuthorize 어노테이션이 잘 작동되는 것 같은데 securedEnabled랑 prePostEnabled 둘 중에 하나만 적어주면 되는 건가요?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
loginId는 왜 변경이 안될까요?
기존에 있던 정보를 삭제하고 새로 추가할경우엔 잘 동작하는데강의와 같이 업데이트할땐 loginId 변경이 안되네요..!
-
미해결스프링부트 시큐리티 & JWT 강의
/loginForm?error가 발생하며 로그인이 안 됩니다.
4강을 수강하는 중에 생긴 오류입니다. 회원가입은 정상적으로 작동하는데 로그인을 하려고 하면 아래 사진처럼 오류가 발생합니다.강의를 여러번 돌려보며 코드는 똑같이 따라했고, 콘솔에 찍히는 것을 보면 제가 로그인 하고자 하는 username도 잘 찍힙니다. (회원 정보를 찾는 것까지는 정상적인 거 같습니다)import org.springframework.boot.web.servlet.view.MustacheViewResolver; // 이 import문에서 reactive로 하라고 하셨는데 그걸로 바꾸면 아래의 setCharset, setContentType 등에서 오류가 발생하여 servlet으로 하였습니다. import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { MustacheViewResolver resolver = new MustacheViewResolver(); resolver.setCharset("UTF-8"); resolver.setContentType("text/html;charset=UTF-8"); resolver.setPrefix("classpath:/templates/"); resolver.setSuffix(".html"); registry.viewResolver(resolver); } }@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public BCryptPasswordEncoder encodePwd(){ return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')") .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')") .anyRequest().permitAll() .and() .formLogin() .loginPage("/loginForm") .loginProcessingUrl("/login") .defaultSuccessUrl("/"); }
-
미해결스프링부트 시큐리티 & JWT 강의
스프링에서 설정 값 관리하는 방법 질문드립니다.
강사님 안녕하세요.스프링에서 토큰을 암호화, 복호화하기 위한 secret 키 값을 관리하는 방법을 알고 싶은데, 구글링해도 잘 나오지 않아 질문남깁니다. 스프링 부트에서는 .yml 파일 또는 .property 파일을 통해 설정값을 따로 관리하여 @value로 불러와서 사용하던데, 스프링에서는 어떤 파일을 통해 어떻게 사용할 수 있을까요?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
memberRole필드 질문이요~
Member 클래스의 memberRole필드는 왜 클래스의 본문에 정의해주나요?null 초기화때문인가요? 파라미터에서도 기본값으로 null을 줄 수 있지 않나요?
-
미해결스프링부트 시큐리티 & JWT 강의
10강 시큐리티 로그인중 api 라이브 과정
처음에 기타가 아닌 걸로 했다가 다시 작성해봅니다.앱 라이브를 안할경우 페이스북 로그인시 뜨는 화면 라이브를 하려니 뜨는 에러개인정보처리방침 URL:https://www.facebook.com/privacy/policy/?entry_point=facebook_page_footer사용자 데이터 삭제 https://developers.facebook.com/docs/development/create-an-app/app-dashboard/data-deletion-callback 임의 작성 localhost:8080 에서 대충 www.naver.com으로 웹사이트 url 변경 앱 라이브 성공!! 일단 라이브 성공 상태에서 다시http://localhost:8080 로 웹사이트 url 변경 ??? 읭? 분명 비활성화에서 바뀌긴 했는데 페이스북 로그인이 안됨.. (개발자 계정과 다른 페북 아이디일경우) 개발자 페이스북 아이디 동일할경우. 여기까지 후 일단 페북 인증 잠정 중단.확인결과 비즈니스계정을 인증해야 api를 정상적으로 사용가능한데, 비즈니스계정 인증시 사업자 등록증 등 요구하는게 많아 포기.
-
해결됨[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
Validation 관련해서 질문드립니다.
무료 강의임에도 굉장히 강의 퀄리티가 높은 것에 감탄을 하며 보고 있는 중입니다. 좋은 감사드립니다.Validation 처리와 관련해서 질문드릴 것이 있는데요. 강의에서 DTO에 해당하는 클래스의 프로퍼티에 백킹필드를 사용하시고 Custom Getter를 만들어서 처리를 하셨는데, 혹시 이렇게 하는 방법 말고 바로 프로퍼티만으로 하는 방법도 있을까요?
-
미해결스프링부트 시큐리티 & JWT 강의
스프링 부트 시큐리티 6강-구글 로그인 준비
6강을 시작하면서 구글 클라우드 api 화면에서 새 프로젝트를 만들려고 여러 번 시도를 하였으나 만들어지지 않습니다.왜 그런 걸까요
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 강사님 질문있습니다.
만약 이 네이버 로그인까지 진행하고 로그인을 완료하면 index 페이지로 이동을 하는데,jwt토큰을 생성하려면 어떻게 해야 되나요?Service 에서 생성하고 적용하면 되는 건가요?
-
미해결스프링 시큐리티
Remember me 쿠키에 대해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. remember me 쿠키에 대해 질문드리려 합니다remember-me 쿠키는 사용자아이디 + 비밀번호를 암호화 해서 가지고 있는걸로 이해했습니다. 그래서 인증 토큰이 만료된다면, remember-me 쿠키를 통해서 쿠키를 디코딩하여 다시 인증을 시도하는걸로 이해했구요!그러면, 마지막에 'remember-me 쿠키를 통해서 쿠키를 디코딩하여 다시 인증을 시도' 하기 전에, 사용자가 비밀번호를 변경한다면 remember-me 는 적용이 안되고 다시 로그인 페이지로 돌아가는 걸까요?강의 잘 듣고 있습니다. 감사드립니다!