현재 진행중인 프로젝트에서 api를 활용해 젤리 영양성분 정보를 받아오거나 수정, 관리등을 하는 기능을 구현하는 와중에 사용자의 권한에 따라 접근할 수 있는 메소드가 달라야 할 필요성이 생겼다. 그래서 spring security를 조금 알아보기로 하였다!
엔터프라이즈 애플리케이션을 위한 인증, 권한 부여 및 기타 보안 기능을 제공하는 Java/Java EE 프레임워크입니다.
create user 'cos'@'%' identified by 'cos1234';
GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%';
create database security;
use security;
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: cos
password: cos1234
jpa:
hibernate:
ddl-auto: update #create update none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
server.port=8080
server.servlet.context-path=/
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
spring.datasource.url=jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=cos
spring.datasource.password=cos1234
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 추가
spring.jpa.defer-datasource-initialization=true
@Controller
public class IndexController {
@GetMapping({"", "/"})
public String index() {
// 머스테치 기본폴더 src/main/resources
// 뷰리졸버 설정 : templates (prefix), .mustache (suffix) 생략가능!!
return "index"; // src/main/resources/tamplates/index.mustache
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>인덱스 페이지</title>
</head>
<body>
<h1>인덱스 페이지입니다.</h1>
</body>
</html>
@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");
// prefix 설정
resolver.setPrefix("classpath:/templates/");
// suffix 설정
resolver.setSuffix(".html");
registry.viewResolver(resolver);
}
}
인덱스 페이지로 이동한다!!