@Pattern (regexp = "^[a-zA-Z0-0]*$", message = "사용자이름은 영어랑 숫자만 가능합니다.")
Dto에 Pattern 을 적어서 영어랑 숫자만 가능하게 한다.
======================= 해당하는 내역 보여주기=================================
● UserRepository
public List<User> findByUsernameContainingOrEmailContaining(String username,String email);
list 로 해당구문을 적는다.
●UserController
@GetMapping("usernameemail")
public ResponseEntity<List<User>> getAllUserName(@RequestBody UserDto userDto){
List<User> list = userRepository.findByUsernameContainingOrEmailContaining(userDto.getUsername(),userDto.getEmail());
return ResponseEntity.status(HttpStatus.OK).body(list);
}
이렇게 하면 json형식으로 지정한 값만 불러올 수 있다.
==================================jasypt============================================
packagre형식은 이렇게 했습니다.
우선 Edit Configurations.. 에 add VM options 를 눌러서
-Djasypt.encryptor.password=passw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rd
를 추가해준다.
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
이형식을 추가해준다.
우선 application 파일을 yml 파일로 바꿔준다.
●application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(65u6Bwx0lQY/Qd+4RHIgHCqKCuWvg/WDJ0/bEw58P/CFeSVuqIKsLi8daYUoe39CcRnOS34H3+mpaEnMBFqOHodPCDnyuVMt/leRIbO58lyKv2MErPeWC+n5jXZsRZ0809TFDK6sujWQghi1Rxjit9trbzylFJ7Bzo3JRFwsEHU=)
#url: jdbc:mysql://112.228.211.194:3306/mh?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC
#url: jdbc:mysql://localhost:3307/mh?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC
#username: ENC(kJKZxiBvZ/36/js2QphSMA==)
username: ENC(mZM85xKW7UKEuQAL7Riv5w==)
password: ENC(S3GZTYnC45YzLE0HpI0MzA==)
#password: ENC(UrnzNMv0uxnux53u7WKiHQ==)
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQLDialect
defer-datasource-initialization: true
hibernate:
ddl-auto: create-drop
generate-ddl: true
show-sql: true
properties:
hibernate:
format_sql: true
sql:
init:
mode: always
jasypt:
encryptor:
password: ${PASSWORD}
이형식은 암호화 한 형식이다.
●test.main.MyEncrytor
파일을 만들어 준다.
package com.mh.restapi03;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
public class MyEncrytor {
// @Value("${jasypt.encryptor.password}")
private String password = "passw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rdpassw@rd";
@Test
void name() {
System.out.println("실행됩니다." + password);
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setPoolSize(4);
encryptor.setPassword(password);
encryptor.setAlgorithm("PBEWithMD5ANdTripleDES");
String content = "jdbc:mysql://localhost:3307/mh?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC";
String encString = encryptor.encrypt(content);
String decString = encryptor.encrypt(encString);
System.out.println(String.format("encString = %s decString = %s", encString, decString));
content = "root";
encString = encryptor.encrypt(content);
decString = encryptor.encrypt(encString);
System.out.println(String.format("encString = %s decString = %s", encString, decString));
content = "1234";
encString = encryptor.encrypt(content);
decString = encryptor.encrypt(encString);
System.out.println(String.format("encString = %s decString = %s", encString, decString));
}
}
url 과 username 과 password 를 암호화 해준다.
●conf.JasyptConfig
package com.mh.restapi03.conf;
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import lombok.Getter;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Configuration
@EnableEncryptableProperties
public class JasyptConfig {
@Value("${jasypt.encryptor.password}")
String password;
@Bean(name = "jasyptStringEncryptor")
public PooledPBEStringEncryptor jasyptStringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setPoolSize(4);
encryptor.setPassword(password);
encryptor.setAlgorithm("PBEWithMD5ANdTripleDES");
return encryptor;
}
}
암호화의 기본 형식을 적어준다.
'spring boot' 카테고리의 다른 글
theyeleaf 사용 (0) | 2024.04.01 |
---|---|
Spring boot 복습 (0) | 2024.03.18 |
Spring boot @handleMethodArgumentNotValid / delete/@Transactional (0) | 2024.03.12 |
Spring boot 오류에 대한 설정/ UPDATE /{ID} (0) | 2024.03.11 |
Spring boot 웹에서 만든 패키지 보기 (0) | 2024.03.11 |