๋ฐ์ํ springboot27 [error] Unable to determine Dialect without JDBC metadata ํด๊ฒฐ SpringBoot๋ mariaDB(ํน์ mySQL) ์ฐ๋์ด ์๋์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ธ๋ฏ. application.properties๋ application.yml ํ์ผ ๊ฐ์์คํ๋ ๋ญ ๋นผ๋จน์๊ฑฐ ์๋ ๋ณด์ธ์ ์ ์ ๊ฒฝ์ฐ๋ ํ๊ฒฝ๋ณ์ ๋ฑ๋กํด๋์ .env ํ์ผ ์ธ์์ด ์๋ผ์ ์๋ฌ๋ ๊ฐ์. ๊ทผ๋ฐ ๋งค๋ฒ ํ๋ก์ ํธ ๊ป๋ค ํฌ๋๋ง๋ค edit Configuration๋ค์ด๊ฐ์ .envํ์ผ ๋ฑ๋กํด์ค์ผ ํ๋๊ฑด๊ฐ..? ํ 2025. 11. 28. [Java] ์๋ฐ ์ง๋ ฌํ, ์ญ์ง๋ ฌํ๊ฐ ๋ญ๊น?ObjectMapper ํด๋์ค ObjectMapper ํด๋์ค๊ฐ ๋ค์ด๊ฐ ์ค์ต ์ฝ๋๊ฐ ์๊ธธ๋ ๊ถ๊ธํด์ ์์๋ดโโโObjectMapper ํด๋์ค ํตํด์ ๋ง๋ ๊ฐ์ฒด๋,โ์๋ฐ ๊ฐ์ฒด -> Json๊ฐ์ฒด (์ง๋ ฌํ)Json๊ฐ์ฒด -> ์๋ฐ ๊ฐ์ฒด (์ญ์ง๋ ฌํ)ํ ๋ ์ฐ์ HTTP์์๋ JSON์ ์ฐ๊ณ JAVA์์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํจโ๊ทธ๋ ๋ค๋ฉด ์๋ก ํ์์ ๋ง๊ฒ ๋ณํํ๋ ๊ณผ์ ์ด ํ์์ ์.โ๊ทธ๋ฐ ์์ ์ ์ง๋ ฌํ, ์ญ์ง๋ ฌํ ๋ผ๊ณ ํ๋๊ฑฐ์(์ด๋ฆ์ด ๊ดํ ์ด๋ ค์..)โโ์๋ฅผ๋ค์ดโ์๋ฐ ๊ฐ์ฒด๊ฐ ํ๋ ์๋๋ฐ, ์ด ๊ฐ์ฒด ์์๋"title"์๋ "์ ๋ชฉ1"์ด๋ผ๋ ๊ฐ์ด,"content"์๋ "๋ด์ฉ1"์ด๋ผ๋ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ค๊ณ ์น์.โ---> (JSON์ผ๋ก ์ง๋ ฌํ) --->{"title" : "์ ๋ชฉ1","content": "๋ด์ฉ1"} ์ด๋ ๊ฒ ๋ณํ๋๋๊ฑฐ์!!!!โโ์ญ์ง๋ ฌํ๋ ๊ฑ ๋ฐ๋โ O.. 2025. 5. 4. [Spring Boot] ํ ์คํธ์ฝ๋์์ ๋กฌ๋ณต import์๋จ @Getterpublic class JwtFactory { private String subject = "test1@email.com"; private Date issuedAt = new Date(); private Date expiration = new Date(new Date().getTime() + Duration.ofDays(14).toMillis()); private Map claims = emptyMap(); // ๋น๋ ํจํด ์จ์ ์ค์ ์ด ํ์ํ ๋ฐ์ดํฐ๋ง ์ ํ ์ค์ @Builder public JwtFactory(String subject, Date issuedAt, Date expiration, Map claims) { this.subject .. 2025. 5. 4. [Spring Security] JWT์ Authentication๊ฐ์ฒด (์ฐ์์ ์ฐจ์ด, ๋ด๊ฐ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ ์ ๋ฆฌ) ๋๋ ์ง๊ธJWT ํ ํฐ ์์ฑ + ์ ํจ์ฑ ๊ฒ์ฌํ๋ ํด๋์ค ๊ณต๋ถํ๋ค๊ฐ์๊ธด ๊ถ๊ธ์ฆ๋ค์ด ์์ด์์ ๋ฆฌ ํ๋ ค๊ณ ํจโ๊ฑ ๋ด๊ฐ ์ดํดํ๋ฉด์ ์ฃผ์ ์ฃผ์ ์ฐ๋๊ฑฐ๋ผ์ฝ๊ธฐ ์์ข์ ์ ์์..ใ โ /*ํ ํฐ ์์ฑ & ์ฌ๋ฐ๋ฅธ ํ ํฐ์ธ์ง ์ ํจ์ฑ ๊ฒ์ฌํ ํฐ์์ ํ์ํ ์ ๋ณด ๊ฐ์ ธ์ค๋ ํด๋์ค */@RequiredArgsConstructor@Servicepublic class TokenProvider { private final JwtProperties jwtProperties; public String generateToken(User user, Duration expiredAt) { Date now = new Date(); return makeToken(new Date(now.getTime() + expiredA.. 2025. 5. 4. [Spring Security] ํ ํฐ ์์ฑ, ์ ํจ์ฑ ๊ฒ์ฌ, ์ ๋ณด ๋นผ์ค๋ ํด๋์ค ์ฝ๋ - TokenProvider ์ ํฌ์คํ ์์ ์์กด์ฑ ์ถ๊ฐ,์ด์ ๋ฐ๊ธ์ & ๋น๋ฐํค ์ค์ ํ๋ค์๊ทธ๊ฑธ ๋ณ์๋ก ๊ฐ๊ณ ์ค๋ ํด๋์ค (JwtProperties.java) ๋ง๋ค์์โ์ด๋ฒ์๋ ํ ํฐ ์์ฑํ๊ณ , ์ ํจ์ฑ ๊ฒ์ฆํ๊ณ ,ํ ํฐ์์ ํ์ํ ์ ๋ณด ๋นผ์ค๋ ํด๋์ค ์์ฑํ ๊ฑฐ์โ์ด๋ฆ์ TokenProvider.java์์น๋ config/jwt ๋๋ ํ ๋ฆฌ ๋ด /*ํ ํฐ ์์ฑ & ์ฌ๋ฐ๋ฅธ ํ ํฐ์ธ์ง ์ ํจ์ฑ ๊ฒ์ฌํ ํฐ์์ ํ์ํ ์ ๋ณด ๊ฐ์ ธ์ค๋ ํด๋์ค */@RequiredArgsConstructor@Servicepublic class TokenProvider { private final JwtProperties jwtProperties; public String generateToken(User user, Duration expiredAt) { Da.. 2025. 5. 4. [Spring Security] JWT ๊ตฌํ ์ค๋น๋จ๊ณ(์์กด์ฑ ์ถ๊ฐ, ์ด์ ๋ฐ๊ธ์, ๋น๋ฐํค ์ค์ ) 1. ์์กด์ฑ ์ถ๊ฐ build.gradle์์dependencies์ implementation 'io.jsonwebtoken:jjwt:0.9.1'implementation 'javax.xml.bind:jaxb-api:2.3.1' ์ถ๊ฐ 2. ํ ํฐ ์ ๊ณต์ ์ถ๊ฐ applicaion.properties์ //.yml ํ์์jwt: issuer: tester1@gmail.com secret_key_ : study-springboot//.properties ํ์์jwt.issuer=tester1@gmail.comjwt.secret_key_=study-springboot์ด์ ์์ ๊ฐ๋ค์ ๋ณ์๋ก ์ ๊ทผํ๋๋ฐ ์ฐ๋ JwtProperties ํด๋์ค ๋ง๋ค ์ฐจ๋กโ์ฐธ๊ณ ๋ก Spring Boot๋ ํ์ดํ(-) → ์นด๋ฉ์ผ.. 2025. 5. 4. [Spring Security] JWT๋?JWT ๊ตฌ์กฐ, ๋ฆฌํ๋ ์ ํ ํฐ ๋ฐ๊ธ ๊ณผ์ JWT๋? JWT = Json Web Tokenํ ํฐ ํ์ ์ค์ ํ๋์!โjson ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ ํฐ ํฌ๋งทโ๊ตฌ์ฑ(๋ด๊ณ ์๋ ์ ๋ณด)์header + payload + signatureโโ์ JWT ํ์์ ๋ง์ด ์ธ๊น?- ์๋ฒ๊ฐ ์ํ ๊ธฐ์ตํ ํ์๊ฐ ์๊ณ - ํ ํฐ ์์ ํ์ํ ์ ๋ณด ๋ด์ ์ ์๊ณ - ๊ตฌ์กฐ ๋จ์ํ๊ณ , ๋ค์ํ ์ธ์ด/ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅ ๋ฐ๊ธ๋ฐ์ JWT๋ฅผ ์จ์ ์ธ์ฆ ํ๋ ค๋ฉด,HTTP ์์ฒญ ํค๋ ์ค Authorization ํค ๊ฐ์Bearer + JWT ํ ํฐ๊ฐ ๋ฃ์ด์ ๋ณด๋ด์ผ๋จ.โ Authorization : Bearer ey~~~~ JWT ๊ตฌ์กฐ๋? .์ ๊ธฐ์ค์ผ๋กํค๋ (header), ๋ด์ฉ(payload), ์๋ช (signature)๋ก ๊ตฌ์ฑ aaaaa.bbbbbb.ccccc // (a=ํค๋.. 2025. 5. 4. [Spring Security] ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ด๋?ํ๋ฆ, ํน์ง ์ ๋ฆฌ JWT ๊ณต๋ถ ์ ์ ์ฌ์ ์ง์์ผ๋ก ํ ํฐ๊ธฐ๋ฐ ์ธ์ฆ์ ์์์ผํจ ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ & ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์ ๊ทผํ ๋,์ธ์ฆ๋ ์ฌ๋์ธ์ง ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ๋ค ์ค ํ๋โ์คํ๋ง ์ํ๋ฆฌํฐ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ ์ ๊ณต.โ๋๋ ์ง๋ ์ฑํฐ์์๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ ์จ์์ฌ์ฉ์ ์ ๋ณด ๋ด์ ์ธ์ ์์ฑ & ์ ์ฅํด์ ์ธ์ฆํ์(= ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ)(๋ฐ๋ก ์ง์ ์ ์ผ๋ก ๋ช ์ ์ํด๋ ์์์ ์คํ๋ง ์ํ๋ฆฌํฐ์์ ํด์ค)โํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์, ํ ํฐ์ ์ฌ์ฉํ๋๊ฒ์โํ ํฐ์ uniqueํ ๊ฐ์ผ๋ก, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์์๋ฒ๊ฐ ํ ํฐ ๋ง๋ค์ด์ ํด๋ผ์ด์ธํธํํ ์ฃผ๊ณ ,ํด๋ผ์ด์ธํธ๋ ์ด ํ ํฐ ๊ฐ๊ณ ์๋ค๊ฐ์๋ฒํํ ์์ฒญํ ์ผ ์์ ๋ ํ ํฐ์ด๋ ๊ฐ์ด ์ ์ฒญํจ.-> ์๋ฒ๋ ํ ํฐ๋ง ๋ณด๊ณ ์ ํจํ ์ฌ๋์ธ์ง ์๋์ง ํ๋จํจ ํ ํฐ.. 2025. 5. 4. [Spring Security] Empty encoded password ์๋ฌ ์คํ๋ง ์ํ๋ฆฌํฐ๊ฐ ๋ก๊ทธ์ธํ ๋ pw๊ฐ ๋น์ด์๋ค๊ณ ํด์ํฐ์ง๋ ์์ธโ๋ด๊ฐ ๋ฐ๋ณด์งํ๊ฑฐ์..ใ @Table(name = "users")@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getter@Entitypublic class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", updatable = false) private Long id; @Column(name = "email", nullable = false, unique = true) private String email; @Column.. 2025. 5. 4. ์ด์ 1 2 3 ๋ค์ ๋ฐ์ํ