Spring Security - 0

akanana·2023년 2월 16일
0

Spring-Security

목록 보기
2/8

목표

  • Spring Security를 테스트 하기위한 기본적인 Spring 웹 프로젝트를 생성

    jdk : 11
    ide : vscode
    spring-boot : 3.0.2
    ...

프로젝트 생성



페이지 구성

home->user	->manager	->admin
	->login
    ->signup

위와 같은 구조로, /userROLE_USER 이상의 권한, /managerROLE_MANAGER 이상의 권한, /admin에는 ROLE_ADMIN 이상의 권한이 필요하다

pom.xml

...
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.26</version>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mustache</artifactI
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactI
	<version>3.0.2</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-oauth2-client</arti
	<version>3.0.2</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactI
	<version>3.0.3</version>
</dependency>
<dependency>
	<groupId>org.mariadb.jdbc</groupId>
	<artifactId>mariadb-java-client</artifactId>
	<version>3.1.2</version>
</dependency>
...

WebMvcConfig.java

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

위처럼 간략히 페이지를 구성 및 정상 접속 확인

DB 구성

Maria DB를 통해 유저 테이블 관리
쿼리 실행

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

application.yml

server:
  port: 8080
  servlet:
    # context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true
spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/security?serverTimezone=Asia/Seoul
    username: cos
    password: cos1234
  mvc:
    view:
      prefix: /templates/
      suffix: .mustache
  jpa:
    hibernate:
      ddl-auto: create #create update none
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: true

User.java

@Data
@Entity
public class User {
	@Id // primary key
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;
	private String username;
	private String password;
	private String email;
	private String role; //ROLE_USER, ROLE_ADMIN
	@CreationTimestamp
	private Timestamp createDate;
}

깃허브

출처
메타코딩-스프링 세큐리티

0개의 댓글