개발공부/spring security & JWT 강의

[1강] spring security 환경설정 &⭐새로운 사실

기억지기 개발자 2023. 9. 15. 00:25

1)  인텔리제이에서 maven 프로젝트를 아래와 같은 의존성을 추가시켜 생성.

원래는 STS로 진행하는 방식이나 계속해서 설치 오류가 발생해서, 거기서 너무 오랜 시간을 보낼 수 없기 때문에 기존에 사용하고 있던 인텔리제이로 진행해 보기로 했다.
 

2)  Mysql에 아래의 코드를 입력한다.

create user 'cos'@'%' identified by 'cos1234';
GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%';
create database security;
use security;

create user 'cos'@'%' identified by 'cos1234';

  • 이 명령어는 Mysql에 새로운 사용자를 생성하는 명령어이다.
  • 'cos'는 사용자 이름을 나타내며, '%'는 어떤 호스트에서든 접근을 허용함을 의미한다.

GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%';

  • 이 명령어는 'cos' 사용자에게 모든 db와 테이블에 대한 모든 권한을 부여하는 명령어이다.
  • 'ALL PRIVILEGES' 는 모든 권한을 나타내며, '*.*' 는 모든 DB와 테이블을 대상으로 한다는 의미이다.

 

3)  apllication.yml 파일에 아래와 같이 설정해준다.

 

4) Controller 작성

@Controller
public class IndexController {
    @GetMapping({"","/"})
    public String index() {
        return "index";
    }
}

⭐여기서 새롭게 알게 된 사실~~
 

@GetMapping 안에 값이 평상시에 보는 것과는 달라서 알아보니 평상시에는
@GetMapping("/") 이런 식으로 작성하면 🔜 localhost:8080/
그런데 이 경우에는 🔜  localhost:8080 이런 식으로 요청해도 된다는 말~

동시에 1개 이상의 경로를 지정할 수 있다!! 

 
 

5) config 파일 작성

@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);
    }
}

WebMvcConfigurer 인터페이스

  • 이 인터페이스를 구현하여 spring web MVC의 설정을 커스터마이징 할 수 있다.

MustacheViewResolver resolver = new MustacheViewResolver();

  • Mustache 템플릿을 처리할 뷰 리졸버 객체를 생성한다.

resolver.setCharset("UTF-8")

  • 문자 인코딩을 UTF-8로 설정한다. 템플릿 및 출력에 대한 문자 인코당을 정의한다.

resolver.setPrefix("classpath:/templates/")resolver.setSuffix(".html"):

  • Mustache 템플릿 파일의 위치와 확장자를 설정합니다.
    이 코드에서는 클래스패스(classpath)에 있는 "/templates/" 디렉토리 내에서 ".html" 확장자를 가진 템플릿 파일을 찾도록 설정한다.

요약하면, 이 코드는 Spring Web MVC 애플리케이션에서 Mustache를 템플릿 엔진으로 사용하도록 설정하고, Mustache 템플릿 파일은 클래스패스 내의 "/templates/" 디렉터리에서 찾도록 지정합니다. 설정된 MustacheViewResolver를 사용하여 뷰를 처리하게 된다.
 
 

6) 실행시켜 확인해 보기~!!

실제 실행 콘솔화면
http://localhost:8080/login으로 요청 보내기

⛔여기서 잠깐~!!!

나는 /login에 대한 요청을 처리한 적이 없는데 왜 이런 화면이 나오는 거지??

Spring Security는 기본적으로 /login 경로를 로그인 페이지로 설정하며, 만약 사용자가 로그인을 하지 않았을 때 자동으로 해당 페이지로 리디렉션 한다.
Spring Security는 /login 경로로 요청이 들어왔을 때 자동으로 기본 로그인 페이지를 보여준다.
 

위에 콘솔에 있는 노란색 박스에 있는 비밀번호를 복붙 해서 넣어준다.  
id는 기본적으로 'user' 이다.
 
 

저렇게 로그인하고 나면 지정해 줬던 view가 나타난다!!! 
 

[출처 : 인프런 - 스프링부트 시큐리티 & JWT 강의]