묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
5-3 에서 계속 403에러가 발생하는 이유를 모르겠네요;;
{ "timestamp": "2023-05-14T12:49:46.896+00:00", "status": 403, "error": "Forbidden", "path": "/api/login"} https://github.com/whitewise95/springSecurity 마스터 브랜치입니다.
-
미해결스프링 시큐리티
섹션 5. 웹 기반 인가처리 DB 연동에서 AffirmativeBased 를 생성해서 사용할 때 AccessDeniedException 발생 시 메시지가 한글로 변환되는 현상
AffirmativeBased 객체에 대한 질문 https://www.inflearn.com/questions/327562/affirmativebased-%EA%B0%9D%EC%B2%B4%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4한글 인코딩 오류https://www.inflearn.com/questions/52731/%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9-%EC%98%A4%EB%A5%98위 내용 모두 동일 내용이네요.ch05-03 에서 섹션5와 섹션 6까지 많은 것을 구현하셔서 해당 내용에 대한 branch가 없네요. 선생님 github의 ch05-03a branch 에서 재현 되네요. 이 브랜치가 섹션 5에서 섹션 6까지 모두 구현된 소스 같아요.ch05-03a branch 의 application.properties 에서 spring.profiles.active=pointcut 를 주석 처리 후 실행 시키면 실행이 되고 user 로 로그인한 다음에 메시지 페이지에 접근하면 재현 됩니다.AffirmativeBased 클래스의 84번 줄에 break point 잡고 디버깅하면 messages.getMessage() 호출 후 AccessDeniedException 을 생성하여 throw 될 때 detailMessage를 보면 "Access is denied" 이 "접근이 거부되었습니다" 라고 변경되어 저장되네요.왜 locale 문제가 발생하는지 잘 모르겠네요. 저는 영문으로 사용해야 하는데 이 원인이 해결되지 않으면 자원 관리에 대한 DB 연동 자체를 사용할 수 없을 것 같아요ㅠ선생님 왜 그런지 도와주세요.
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
선생님 강의 문의 드릴 게 있는데요~!
API하고 TPC부터 스프2탄까지 이제 거의 다 들었습니다~사물인터넷 통신은 내 손에 << 강의를 수강하려고 하는데요~나온지 기간이 좀 지난터라 진행하는데 있어서 임베디드 관련 아무런 지식이 없는 사람은관련 프로그램 다운로드가 안된다거나 그런 상황이 생기면 대처가 어려울 거 같아서요지금 시점에 들어도 강의 따라 진행하는데 문제 없을까요?사물인터넷 강의도 질문드리면 답변 해주시나요~?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
작성글 저장2 - 클래스 분리
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.selfstudy.request.PostCreate]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.selfstudy.request.PostCreate (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2] 안녕하세요 호돌님, 강의의 '작성글 저장2 - 클래스 분리' 파트 초반부분에서 영상대로 따라했는데 테스트가 실패하여서 관련 오류를 찾아 PostCreate 클래스에 @NoArgsConstructor 어노테이션을 이용해 기본생성자를 추가하는 방법으로 오류를 해결했습니다.그런데 영상에선 분명히 PostCreate 클래스에 따로 기본생성자를 추가한 것이 안보이는데 어떤 차이로인해 오류가 발생한 것인지 궁금합니다
-
해결됨스프링 시큐리티
섹션 4. Ajax 내용 중 front end / 리다이렉트 질문
안녕하세요. 선생님.섹션 4 Ajax 공부 중 궁금한 점이 있어서 질문 드립니다.너무 궁금해요.. 선생님 꼭 답변 부탁드리겠습니다. 1. 7장 front end에서도 루트로 강제 redirect 시킨 것을 원래 가고자 했던 곳으로 redirect 되도록 구현 가능한지요? 7장에 login.htm 파일을 보면 로그인 성공 시 front end 에서 window.location = '/'; 로 루트 페이지로 강제 이동 시켰네요. FormAuthenticationSuccessHandler 처럼 RequestCache 이용하여 서버에서 이전에 가고자했던 곳으로 redirect 시키는 것 처럼.. front end 에서도 구현 가능한 방법이 있는지요? 2. 3장 내용의 서버 redirect3장 인증필터 인증처리자 내용을 구동 시키면 4장 내용 AjaxAuthenticationSuccessHandler 를 구현하지 않았기 때문에 로그인에 성공하면 원래 가고자 했던 곳으로 redirect 302 응답을 서버에서 내려주네요. 그래서 ajax.http 에서 로그인을 시도하면 자동 redirect 가 되네요.질문 1과 비교하여 front-end 에서 redirect 를 하는게 맞는지 서버에서 해주는게 맞는지 실무에서는 어떻게 구현하는지? 알고 싶습니다. 어떤게 더 좋은지.. 3. 서버에서 302 redirect 와 json 데이터 응답4장 인증핸들러의 내용중 AjaxAuthenticationSuccessHandler 내용을 보면 redirect 페이지를 내려주는게 아니라 json 데이터를 내려주는데.. FormAuthenticationSuccessHandler 처럼 RequestCache 구현하여 302 redirect 응답과 json 데이터도 함께 내려주는게 가능한지요? 4. 위 내용 중 어느 구현이 실무에서 많이 사용하는 구현인지 알려주세요.
-
해결됨스프링 시큐리티
Intellij git branch 하이라이팅 방법
안녕하세요. 강의 잘 듣고 있습니다. 세션 4 강의 내용을 보고 있는데.. 선생님 intellij 왼쪽 상단에 git branch 가 highlighting 되어 분홍색(?) 으로 표시되는 신기한 걸 봤네요. 이거 어떻게 하는 건가요? 좋은 기능 같아서요. plugin 이면 어떤 plugin 을 설치해야 되는지 알려주실 수 있는지요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
수업자료 다운로드 위치가 안보입니다 ㅠㅠ
수업자료 ppt가 초반에 다운받는 링크가 어디 있었던걸로 기억하는데 해당 링크가 안보이네요 ㅠㅠㅠ.......
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
session:spring-session-jdbc 의존성 추가 시 mysql 설정
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.만약 MySQL로 진행하시는 분들을 위해 session-jdbc 추가 시 SPRING_SESSION 테이블 추가가 안된다면 이 링크 참고해서 해주시면 되고자 공유드립니다.https://stackoverflow.com/questions/53823174/how-to-initialize-schema-in-spring-session-with-jdbc아래처럼 application.yml에 spring 프로퍼티 안에 해당 내용을 추가하시면 될듯합니다.session: jdbc: initialize-schema: always추가로 설정이 필요한 내용이 있으면 댓글 부탁드리겠습니다.
-
미해결스프링 시큐리티
Ip 제한의 대한 질문이 있습니다.
강의에서 설명해주신 내용은 잘 이해했습니다.강의의 내용은 permitAll 자원을 제외하고, 나머지 인가 자원의 대한 Ip 권한 체크인데요.개인적인 생각으로는 보통 특정 자원이 아닌, 모든 자원의 대한 IP 제한을 하지 않나 싶습니다.그렇게되면, Voter로는 해당 구현이 어려워 보이는데요.[permitAll은 FilterSecurityInterceptor를 상속한 PermitAllFilter에서 처리하기 때문]모든 자원에 대한 IP 제한을 할 경우, 커스텀 필터[IpAccessFilter]를 만들어서 제한을 해야한다고 생각합니다.그러 경우, FilterSecurityInterceptor 전에 두고, 화이트 리스트 IP가 아니라면 AccessDeniedException을 발생할까 고민중입니다. 해당 필터의 위치는 어느쪽이 적합한지와 제가 질문드린 내용의 대한 강사님의 생각이 궁금합니다.
-
미해결스프링 시큐리티
Security 6.0에서의 다중보안설정
안녕하세요, 강의 잘 듣고 있는 수강생입니다. 현재 강의를 들으면서 토이프로젝트를 구축 중입니다.https://www.inflearn.com/questions/42102/%EB%8B%A4%EC%A4%91-%EB%B3%B4%EC%95%88-%EC%84%A4%EC%A0%95위 링크의 질문에서 선생님께서 답변 달아주신 내용인,Admin의 url 에 따른 인증 방식은 Form,User의 url 에 따른 인증 방식은 Rest 방식으로 구분 지으려는 상황입니다. 6.0 버전에 따른 강의는 추후 개정하신다는건 공지를 통해서 알고는 있는데.. 제가 이리저리 뜯어봐도 도저히 인증 방식 다르게 적용하는 부분이 너무나도 안 되서 답답하다보니 질문글을 남기게 됐습니다.. Security 6.0 이상에서 "/api"로 시작하는 url과 "/web"으로 시작하는 url 요청에 따라 다른 인증방식을 적용할 수 있는 간단한 예시를 알려주실 수 있으실까요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
33강 완강기준 list -> get -> list -> 페이지이동 오류 해결법
33강 완강기준이며 list에서 제목을 클릭하여 get(상세페이지) 이동후 뒤로가기를 눌러 list로 돌아와서 페이지 이동을 하면 다음페이지(list)가 아닌 get(상세페이지)가 나오는 현상이 발생했습니다.코드를 분석해보면 지금 상세보기 클릭을 누르면 pageFrm.attr("action","${cpath}/board/get");<-- 해당 코드를 통해 jsp내 적혀있는 pageFrm이란 form의 action에 ${cpath}/board/get <-- 해당 주소로 이동하기 때문에 get(상세페이지)가 나오게 됩니다.여기서 뒤로가기를 누르더라도 이미 jsp 상의 pageFrm이란 form의 action에는 ${cpath}/board/get <-- 이 주소가 적혀있으므로 새로고침을 하기전에 페이지 이동을 시도하면 list가 아닌 get(상세페이지)가 나오게 되는것입니다.해결방법은 간단합니다.ㄴ 페이지 번호를 눌렀을때 pageFrm이란 form의 액션에 list 주소가 들어가도록 추가로 js에서 처리해주면 됩니다. (아래 사진 참고하시면 됩니다.)
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
제이쿼리 modify 수정하실 부분이 있습니다 : )
우선 강의 차수는 33강 수정과 삭제후 페이지 번호 유지하기 파트입니다.idx, title, content, writer가 리스트로 넘어갈때는 필요하지 않기 때문에 find()로 찾고 remove() 해주는 방식인데 formData.find("#idx") <--- 현재 id 선택자로 찾고있습니다. 강의 / github 둘다 확인해보시면 name만 지정하였기 때문에 formData.find("#idx")로는 찾을수가 없습니다.수정해주시겠지만 해당 글을 보는 다른 분들을 위해서 방안을 2가지 정도 적어보자면1. formData.find("#idx") <-- 여기서 id로 idx를 찾아주고 있으니 각 id,title,content,writer가 기입되어 있는 태그에 id를 작성해주시면 될듯합니다. 예시 -> <td><input type="text" class="form-control" id ="idx" name ="idx" value="${vo.idx}" readonly ="readonly"/></td>2. formData.find("#idx") <-- 현재는 id를 읽고 있는데 name을 읽을수 있게 변경하면 됩니다.예시 -> formData.find("input[name='idx']").remove();
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
@Modelattribute와 Requestparam의 생략
강의를 듣다가 헷갈리는 부분이 생겨서 질의합니다..!!!1.68번 라인의 Board vo, Vriteria cri가 각각 @Modelattribute가 생략 처리가 된게 맞을까요? 2.93번 라인의 int idx는 @RequestParm이 생략처리가 된것인지 궁금합니다.감사합니다 : )
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
로그인 테스트 관련해서 간단한 질문
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.안녕하세요 호돌맨님.다름이 아니라 호돌맨님 영상 9:30쯤에서 Login DTO에 대한 @NoArgsConstructor가 없는데도 테스트가 정상 작동되는 모습이 보입니다.저는 반대로 NoArgsConstructor가 없이 실행하니 생성자를 만들고 테스트를 실행하라고 빌드내용이 떴습니다.이에 대해서 제가 놓치고 있는 부분이 있는가 싶습니다.자바 버전 이슈인가, 롬복 버전 이슈인가 고민이 드네요https://github.com/uiurihappy/blog.ybchar.dev/commit/e5ee816f3b3a3c05dabb586caee0ddfb9fc471a6 해당 커밋입니다.
-
미해결스프링 시큐리티
SessionManagementFilter의 대한 문의드립니다.
https://www.inflearn.com/course/lecture?courseSlug=%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0&unitId=29835&tab=curriculum해당 강의를 듣고 질문이 있습니다.FilterChainProxy의 시큐리티 필터 목록을 보면 SessionManagementFilter가 별도로 있는데요.강사님이 설명해주신 내용과 ppt를 보면, UsernamePasswordAuthenticationFilter에서 호출되는 CompositeSessionAuthenticationStrategy의 strategy들을 SessionManagementFilter라 말씀하시는 것 같습니다.그럼 시큐리티 필터 목록에 있는 SessionManagementFilter는 언제 호출되는걸까요?혹시라도 제가 잘못 이해한 부분이 있다면, 피드백 부탁드립니다.
-
미해결스프링부트 시큐리티 & JWT 강의
@PreAuthorize @Secured 차이
안녕하세요 좋은 강의 해주셔서 감사합니다! 다름이 아니라 강의에 질문이 있어 문의드립니다.혹시 @PreAuthorize @Secured 차이는 표현식의 차이밖에 없는건가요??
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
pageStart 생성시점이 궁금합니다.
BoardMapper.xml의 pageStart가 어디서 생성이 되는지 헷갈려서요 ㅠㅠ...Criteria.java에서 getPageStart()로 만들어준것 같은데.통상 VO에서 getter setter를 만들때 private int pageStart; <-- 이런식으로 선언하고 아래에서 getter, setter를 만들어주는데 여기서는 지금 바로 getPageStart만 만들어주고 있는것 같습니다.근데도 pageStart라는 변수에 값이 들어가는것 같은데 lombok.Data에 의해서 getPageStart()가 자동으로 pageStart를 만들어주는것인가요?
-
미해결스프링 시큐리티
CSRF 세션클러스터링
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.서버가 이중화되어 있고 웹서버와 WAS 사이 클러스터링은 처리가 되어 있습니다.서버 A에서 로그인 후 서버 B에서 로그인이 잘 되는것을 확인했습니다.크롬 개발자 도구에서 POST방식으로 호출 시 헤더에 CSRF 토큰이 존재하는 것 까진 확인하였는데 401에러가 발생합니다. 오류 원인 예상가는 부분은 CSRF 토큰이 각 서버에 공유되지 않아 발생하는게 아닌가 싶습니다...혹시 이 상황을 어떻게 해결해야할까요,,,
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
memProfile 이름을 UUID로 주기
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 혹시 newProfile변수에 UUID값을 줘도 되나요?
-
미해결스프링부트 시큐리티 & JWT 강의
필터 동작 순서에 따라 login결과가 달라지는 이유
안녕하세요. 선생님 좋은 강의 제공해주셔서 감사합니다.선생님 덕분에 거의 마지막 강의까지 진행하고 있습니다. 그러다가 25강에서 '/login'요청에서 response헤더에 토큰이 포함되었음에도 불구하고 자꾸 404에러가 뜨는 것을 확인하였습니다. 확인 결과 SecurityConfig에서 아래의 코드를 넣느냐 빼느냐에 따라서 결과가 달라지는데요. 여기서 2가지 이해가 가지 않는 점이 생겼습니다.필터 동작 순서를 바꾼다고 해도 결국 그 뒤에 FiterChain이 동작하기 때문에 MyFilter3에서 정상적으로 처리하고 FilterChain으로 넘어갔다면 '/login' 요청도 제대로 처리되어야 하는거 아닌가요?@Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class);선생님께서 포스트맨으로 로그인 시도하신 것을 보면 password가 일치하지 않을 경우 401 에러가 뜨던데 저 같은 경우에는 password가 일치하든 불일치 하든 상관없이 http body에는 공백이 뜨고 헤더에 토큰이 반환되느냐 마느냐의 차이만 있고 콘솔에 아래처럼 인증에 실패했다는 로그만 뜨는데 왜 저는 결과가 다르게 뜰까요?