인프런/Spring Boot JWT Tutorial

1) 환경설정, 기본페이지 설정

backend dev 2023. 8. 3.
 

[무료] 스프링부트 시큐리티 & JWT 강의 - 인프런 | 강의

스프링부트 시큐리티에 대한 개념이 잡힙니다., 스프링부트 시큐리티,제가 공부했던 걸 쉽게 설명드릴게요 🙂 스프링부트 시큐리티 github https://github.com/codingspecialist/-Springboot-Security-OAuth2.0-V3 htt

www.inflearn.com

 

유저생성, 설정, 스키마 생성

create user 'wogusJWT'@'%' identified by 'wogus1234'; # 사용자 생성

GRANT ALL PRIVILEGES ON *.* TO 'wogusJWT'@'%'; # 생성한 사용자에 권한부여 (모든 데이터베이스의 모든권한)

create database security; # 새로운 스키마(데이터베이스) 생성

use security; # 생성한 데이터베이스을 사용하기 위해 선택

 

프로젝트 설정

의존성 추가 -> spring web, spring jpa, mysql, lombok, spring security

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.2'
	id 'io.spring.dependency-management' version '1.1.2'
}

group = 'com.cos'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'org.projectlombok:lombok' // lombok

	implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA 의존성
	testImplementation("org.springframework.boot:spring-boot-starter-test") // 테스트를 위한 의존성

    implementation('org.springframework.boot:spring-boot-starter-mustache') // mustache

	implementation 'org.springframework.boot:spring-boot-starter-security' // security

	implementation 'mysql:mysql-connector-java:8.0.33' // mysql
}

tasks.named('test') {
	useJUnitPlatform()
}

 

lombok과 mustache는 플러그인에서 설치해야한다.

 

application.yml


server:
  port: 8080
  servlet:
    context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul
    username: wogusJWT
    password: wogus1234

#  mvc:
#    view:
#      prefix: /templates/
#      suffix: .mustache
#  * Mustache의 기본 경로 -> src/main/resources/  (다른 템플릿엔진과 동일)
#  * 뷰의 논리이름만 반환하여 뷰 리졸버가 뷰를 찾기 쉽게 하기 위해
#  * prefix -> templates,  suffix -> .mustache로 설정한다.
# 하지만 mustache를 의존성등록하면 위의 내용이 자동으로 설정되므로 따로 적을 필요없다.


  jpa:
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: true

 

 

인덱스 컨트롤러

서버 홈페이지에 나타날 인덱스.html를 설정해준다.

@Controller // View를 리턴함.
public class IndexController {

    @GetMapping({"","/"})
    public String index(){
        return "index";
        // 이렇게 뷰 이름을 리턴하면 src/main/resources/templates/index.mustache 라는 파일을 찾게된다.
        // index.html을 찾아서 뷰를 생성해야하므로 WebMvcConfig라는 파일에서 따로 설정해준다.
    }
    
}

 

WebMvcConfig

mustache 의존성을 추가하면 자동으로 suffix가 .mustache이다. 하지만

index 파일은 html로 해놨으므로 

mustache의 뷰리졸버의 suffix를 html로 바꾸기위해 아래와 같이 설정한다.

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {


    // mustache의 뷰리졸버를 수정해서 다시 등록해준다.
    @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"); // mustache 뷰 리졸버가 html파일을 찾게끔

        registry.viewResolver(resolver);
    }
}

 

 

Spring security를 추가하면

서버주소 요청시 이런화면이 뜨는데

default 아이디는 : user

비밀번호는 서버를 구동시킬때 나오는 비밀번호

이걸 복사해서 붙여넣어주면 된다.

 

결과확인

결과확인

 

 

 

댓글