늦은 프로그래밍 이야기

221227 TIL 본문

내일배움캠프/TIL, WIL

221227 TIL

한정규 2022. 12. 27. 22:37

Spring 심화

Spring Security

3.0.0 버전의 Security의 AbstractRequestMatcherRegistry 클래스 내의 .antMatchers 메소드가 변경되어 생긴 문제

HttpSecurity의 authorizeRequests 메소드는 authorizeHttpRequest로 바뀌었다는 것을 인텔리제이가 알려주어서 알 수 있었지만, antMatchers 메소드는 컴파일 에러만 발생하고 인텔리제이가 알려주지 않아서 찾는데 꽤 오래 걸렸다. 강의에서도 그냥 삭제하고 진행한다고 하여서 삭제해 보았는데 페이지가 제대로 동작하지 않았다.

 

antMatchers 라고 검색을 해보아도 시큐리티 관련 연동 및 설정이나 기능들에 대한 글들만 나와서 한참을 찾아보다가 antMatchers 3.0 이라는 키워드로 검색을 해보았더니 Stack Overflow의 글이 하나 있었다.

 

해당 글에서 antMatchers는 3.0부터 requestMatchers로 바뀐 것을 알 수 있었고, 작성을 하여 진행을 해보았더니 페이지가 정상적으로 작동하는 것을 확인할 수 있었다. 정확히는 모르겠지만, 해당 메소드를 사용하여 .permitAll을 해주지 않으면 해당 페이지에 진입(?)하지 못하는 것 같았다. 추후에 또 바뀐 메소드가 나올 것 같아서 2.7.5로 빌드를 수정하고 진행하였다.

// 2.7.5의 authorizeRequests, antMatchers
http.authorizeRequests().antMatchers("/api/user/**").permitAll()
        .antMatchers("/api/search").permitAll()
        .antMatchers("/api/shop").permitAll()
        .anyRequest().authenticated()

// 스프링 3.0부터 authorizeHttpRequests, requestMatchers로 바뀌었다.
http.authorizeHttpRequests().requestMatchers("/api/user/**").permitAll()
        .requestMatchers("/api/search").permitAll()
        .requestMatchers("/api/shop").permitAll()
        .anyRequest().authenticated()

login.html 파일이 templates 폴더 안에 위치하지 않아서 생긴 문제

강의 초반부터 문제가 생겼다. 실습하는 과정에서 코드를 붙여넣고 실행을 시켜보았다. 코드는 돌아가는데 localhost에서 리디렉션한 횟수가 너무 많습니다. 라는 에러가 발생하면서 창이 뜨지 않는다. 무엇이 문제인지 감이 잡히지 않는다.

 

쿠키를 삭제해보라 그래서 인터넷 사용기록도 모두 지우고 시도해 보았는데도 똑같은 에러가 뜬다. 무언가 리디렉션으로 계속 페이지를 호출하는 것 같은데, 붙여넣은 코드는 Controller 클래스와 WebSecurityConfig 클래스가 전부여서 강의와 전혀 다른 점을 찾지 못했다. return new ModenAndView(”login”); 부분에 에러가 발생하여 살펴보았더니 cannot resolve라고 쓰여 있어서 .html로 바꾸어봐도 똑같았다.

 

자세히보니 html 파일을 templates 폴더에 넣지 않고 resources 폴더에 넣어서 발생한 문제였다. templates 폴더에 넣으니 해결되었다.. 코딩 공부를 시작하며 들었던 웹개발 종합반에서 배운 HTML 파일의 위치를 다시 한번 상기시켜 주었다. 이런 사소한 실수를 해서 시간을 낭비하는 일은 하지 말아야 할 것이다.


Basic.js 파일이 static/js 폴더 안에 위치하지 않아서 생긴 문제

스프링 시큐리티 강의를 들으며 기존에 작성했던 MySelectShop을 Security로 리팩토링 하는 작업을 진행하였는데, 코드스니펫을 붙여 넣는 것보다 직접 작성하는 것이 뭐가 다른지 작성하면서 볼 수 있을 것 같아서 직접 작성을 하였는데, 회원가입을 하여 h2에 저장되는 것까지는 확인을 했지만, 로그인한 후 페이지가 정상적으로 작동하지 않았다.

 

로그인이 된 페이지는 작동을 하는 페이지고, 로그인이 안된 페이지는 작동을 하지 않는 그냥 template만 있는 페이지인데 로그인이 되지 않은 페이지가 뜨고, 아무런 동작이 되지 않았다. 문제점을 찾기가 힘들었다. 직접 작성해서 뭔가 틀렸나 생각하고, 모든 코드스니펫을 복사해서 붙여 넣었지만, 동일한 증상이 발생하였고, 코드들을 눈으로 하나씩 살펴보는데도 틀린 곳이 없는 것 같았다.

 

혼자 힘으로 안될 것 같다는 생각이 들어 튜터님한테 찾아가 질문을 해보았는데, 웹 페이지에서 F12를 눌러 Network 창이나 Source 창 어디를 살펴 보아도 Basic.js를 불러오지 않는 것을 확인하였다.

<script type="text/javascript" th:src="@{/js/basic.js}"></script>

index.html의 코드 중에 해당 코드에서 basic.js의 위치가 js폴더 내로 설정이 되어 있었는데, 그 전 강의에서는 그냥 static 폴더에만 넣고 사용을 해서 위치가 달라서 못 불러오는 상황에서 발생한 오류였다.

 

이번 에러는 프론트 영역(?)이기도 하고 그동안 Network 창이나 Source 창을 사용해 보지 않아서 쉽게 발견할 수 없는 문제였다. 웹 페이지에서 Network 창이나 Source 창을 보고 문제를 해결하는 연습을 해야 하겠다는 생각이 들었다. 그동안 postman을 사용하면서 신경쓰지 못했던 html이나 js, css의 파일의 위치를 정확하게 넣어 주도록 해야할 것이다.


알고리즘

reached end of file while parsing

알고리즘 코드를 인텔리제이에서 작성하고, 인텔리제이에서는 잘 돌아갔는데 프로그래머스 페이지에 옮겨 붙이니 발생하는 오류였다.

 

검색을 해보았더니 파싱하는 도중에 파일의 끝부분에 도달했다는 의미였다. 주로 괄호나 인용부를 닫지 않거나 열고 닫은 수가 맞지 않는 경우에 출력된다고 한다. 확인해보니 마지막에 중괄호가 하나 부족했던 것을 알 수 있었다. 초반에도 안했던 실수를 요즘 많이 하는 것 같다. 조금 더 신경써서 코드를 작성 해야겠다.


'내일배움캠프 > TIL, WIL' 카테고리의 다른 글

221229 TIL  (0) 2022.12.30
221228 TIL  (0) 2022.12.28
221226 TIL (FetchType)  (0) 2022.12.26
8주차 WIL  (0) 2022.12.25
221223 TIL (개인과제 리팩토링)  (0) 2022.12.23
Comments