본문 바로가기
개발/스프링 FIreBase Neo4j

SPRING BOOT SECURITY 설정

by 꿈트리꿈트리 2023. 1. 22.

SPRING BOOT SECURITY 비밀 번호 설정

스프링 부트에 시큐리티를 추가하게 되면 첫 페이지에 비밀 번호를 입력하라고 나오게 된다.

sign page

이건 직접 만든 페이지는 아니지만 스프링 시큐리티에서 제공해 주는 화면으로 간단한 인증시스템을 구현해 놨다.

초기 비밀번호

초기에 비밀번호는 부팅할 때 제공해 주는데.

패스워드는 알려주는데 아이디가 표시가 되어 있지 않다.

나같이 admin을 치는 사람도 있을 건데 ID는 user 다.

user랑 부팅 시 제공해 주는 문자를 사용해도 되고 yaml파일에 추가해 줘도 된다.

추후에 auth를 구현할 것이기 때문에 초반에 단순하게 해서 사용하면 된다 로그인을 하게 되면 아무 코딩을 안 해놨다면 에러페이지를 맞이하게 된다. 로그인이 되어도 갈페이지가 없으니까.

Error Page

갈 곳을 잃은 404 에러 리턴.

이제 라우트 설정을 해주고 화면도 만들어 주고 Firebase도 연결해 주고 Functions도 연결해 주고

할 일이 엄청 많다.

application.yml

간단하게 아이디 비밀번호 설정은 yml파일에 할 수 있다. 어차피 나중에 안 쓰게 되지만 당분간은 저렇게 해둔다.

 

Welcome Page 컨트롤러 만들기

요즘엔 요청의 주소를 라우트페이지에 한 곳에 모아서 사용하는 거 같지만 전 화면이나 기능에 따라 따로 모아 두는 것을 선호하는 사람이라 일단 루트 페이지 메인이나 홈을 모아둔 컨트롤러를 따로 만들어서 환영 메시지를 띄워 보겠습니다..

RestController code

요청에 대한 컨트롤을 지정해 주는 소스다 / 로 들어오는 요청에 대해 Welcome이라는 문장을 리턴해 준다.

welcome 화면

@Controller 어노테이션은 스프링에게 요청에 대한 핸들러라는 것을 알리는 것이고

@RestController 어노테이션은 컨트롤에 @ResponseBody까지 추가된 기능으로 데이터를 쉽게 응답바디에 전해 줄 수 있는 기능까지 추가된 것이다.

 

log 사용법

@Slf4j 어노테이션 사용 시

log.info("웰컴로그"); 

사용 가능하고 로그 레벨에 맞는 로그를 출력해 콘솔에 확인할 수 있다 개발 시엔 log.debug로 놓고 사용하면 운영 시엔 로그가 쌓이지 않게 할 수 있다.

 

@RequestMapping("/") 은 get이나 post요청을 다 받아서 처리하는 것이고 getMapping postMapping 등 여러 가지가 있다.

대부분 홈은 post에 데이터를 담아서 처리하지 않을 것이기에 request로 다 받아 놓았다.

일단 기본적인 페이지 핸들링은 이런 식으로 처리가 되고 여기까지 이해하고 숙달되면 페이지 하나 띄우는데 스프링 부트를 사용하면 수분이면 가능하지 싶다. 물론 디비나 그런 것들이 구축이 되어 있다는 전제 하에 간단한 서비스 하나 띄우는 데는 수분이면 가능하고 나머지는 이제 원하는 로직을 만들고 테스트하고 그런 과정이 필요한 만큼 걸릴 것이다.

Error 핸들러랑 페이지 등도 만들어 줘야 하는데 어디 잘 만들어진 거 없나. 누군가 만들어 놨을 거 같은데 아시는 분 댓글 좀 달아 주세요.

여기 까지는 @RestController사용으로 "/" 요청에 @ResponseBody 가 자동으로 작동해 문자열 데이터가 전달된 것이고 이제 백엔드 화면 단위의 템플릿을 사용하는 방법도 알아보자.

DevTools 사용

그전에 DevTools라는 라이브러리도 있다 자바 소스등을 수정 시 자동으로 리빌드 해주는데 유용하게 사용하는데 라이브러리만 추가한다고 되지는 않고 개발툴에 설정을 해주어야 한다.

크게 auto-make 설정, 프로젝트 빌드 자동 체크 등을 해주면 소스 변경 시 자동으로 리빌드 돼서 적용이 된다.

인텔리J같은 경우 소스가 자동 저장인데 Ctrl+s 누르면 저장되면서 리빌드가 돼서 적용이 된다.

 

애플리케이션 실행 시 로그 중에

- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

이런 로그가 있는데 devtools를 사용하면 합리적으로 속성들을 설정해 준다는 겁니다

thymeleaf의 캐시 기능을 예로 들면 캐싱이 되면 변경 내용이 바로 적용되지 않을 수 있는데 개발 모드에선 꺼두게끔 기본 설정을 잡아 준다는 거지요 저는 그것도 모르고 설정에 캐시를 수동으로 꺼놨는데 그럴 필요 없었던 거네요.

이제 다음엔 Thymeleaf를 설정해 보도록 하겠습니다.