κ°μ‘±μ΄λ μΈκ° μΉμ²λ€μ΄ κ°μ΄ μ°λ λ³μ₯μ
μ’ λ λΆνΈνκ² μ°λ €κ³ λ§λ νλ‘μ νΈμ
λλ€.
μΉ΄ν‘μ΄λ μ νλ‘ βλ μ΄λ² μ£Ό μ¨λ λΌ?β μ΄λ° μμΌλ‘ λ§μΆλ€ 보λκΉ
κ²ΉμΉκ±°λ ν·κ°λ¦¬λ κ²½μ°κ° μκ°λ³΄λ€ λ§μμ,
κ·Έκ±Έ μ‘°κΈ μ 리ν΄λ³΄κ³ μΆμ΄μ μμνμ΅λλ€.
μ΄λμ½λ + κ΄λ¦¬μ μΉμΈ κΈ°λ°μΌλ‘ μ΄μλλ νμν λ³μ₯ μμ½ μλΉμ€
μ€μ λ‘ κ°μ‘±λΌλ¦¬ λ³μ₯ μ°λ€ 보면 μ΄λ° λ¬Έμ λ€μ΄ μμμ΅λλ€.
- λκ° μΈμ μ°λμ§ νλμ μ 보μ
- μΌμ μ΄ κ²Ήμ³€μ λ κΈ°μ€μ΄ μ λ§€ν¨
- κ°μ‘± μΈ μΈμμ΄ μμΌ μ μμ
- κ΄λ¦¬μ μ μ₯μμ ν΅μ κ° μ΄λ €μ
κ·Έλμ λ¨μ μμ½ κΈ°λ₯μ΄ μλλΌ,
- μ무λ μ κ·Όνμ§ λͺ»νκ³
- μΉμΈλ μ¬μ©μλ§ μ΄μ©νκ³
- μμ½μ λͺ ννκ² κ΄λ¦¬λλ
ννλ‘ λ§λ€μ΄λ³΄λ κ²μ λͺ©νλ‘ νμ΅λλ€.
- μ΄λμ½λ κΈ°λ° νμκ°μ
- κ°μ
μ
PENDINGμνλ‘ μ μ₯ - κ΄λ¦¬μ μΉμΈ ν
ACTIVEμνμμλ§ λ‘κ·ΈμΈ κ°λ₯ - JWT κΈ°λ° μΈμ¦
- 1νμ© μ½λ
- μν κ΄λ¦¬
ACTIVEUSEDEXPIREDREVOKED
- λ§λ£λ μ½λλ μ¬μ© μ μλμΌλ‘
EXPIREDμ²λ¦¬
- λ μ§ λ¨μ μμ½
- μμμΌ ~ μ’ λ£μΌ ν¬ν¨
- ν루 λ¨μ μμ½ κ°λ₯
- μμ½ μ·¨μ κΈ°λ₯
- κ΄λ¦¬μ μμ½ μμ κΈ°λ₯ μμ
- μΊλ¦°λ κΈ°λ° μ‘°ν μμ
- μ΄λμ½λ μμΌλ©΄ κ°μ λΆκ°
signupNoteλ μ ν μ λ ₯- κ°μ ν λ°λ‘ μ¬μ© λΆκ°
- κ΄λ¦¬μ μΉμΈ ν μ΄μ© κ°λ₯
ACTIVEμνλ§ λ‘κ·ΈμΈ κ°λ₯PENDING,REJECTEDλ λ‘κ·ΈμΈ μ°¨λ¨- μμ΄λ μ‘΄μ¬ μ¬λΆλ ꡬ체μ μΌλ‘ λ ΈμΆνμ§ μμ (보μ)
κΈ°μ‘΄ μμ½: A ~ B μ κ· μμ½: X ~ Y
A <= Y && B >= X
ν루λΌλ κ²ΉμΉλ©΄ μ€λ³΅μΌλ‘ μ²λ¦¬ν©λλ€.
- Java 21
- Spring Boot 4
- Spring Security
- Spring Data JPA
- JWT (jjwt)
- MySQL 8
- Thymeleaf
- Gradle
- IntelliJ / VSCode
- Git / GitHub
com.jinsu.villa ββ common ββ auth ββ user ββ invite ββ reservation ββ admin
κΈ°λ₯ λ¨μλ‘ λλλ κ΅¬μ‘°λ‘ μ€κ³νκ³ ,
μ΄κΈ°μ μ‘μ ꡬ쑰λ₯Ό μ μ§νλ©΄μ νμ₯νλ λ°©ν₯μΌλ‘ κ°λ° μ€μ
λλ€.
- loginId μ€λ³΅ κ²μ¬
- μ΄λμ½λ κ²μ¦ (μ‘΄μ¬ / μν / λ§λ£)
- λΉλ°λ²νΈ BCrypt μνΈν
- μ¬μ©μ
PENDINGμν μ μ₯ - μ΄λμ½λ
USEDμ²λ¦¬
- loginId μ‘°ν
- λΉλ°λ²νΈ κ²μ¦
ACTIVEμνλ§ λ‘κ·ΈμΈ νμ©- JWT ν ν° λ°κΈ
- ν ν° μμ± / κ²μ¦
- userId / loginId / role μΆμΆ
- μΈμ¦ νν° μ μ©
- Stateless ꡬ쑰 μ μ©
- μ μ νμκ°μ μ±κ³΅
- μ€λ³΅ μμ΄λ μ°¨λ¨
- μλͺ»λ μ΄λμ½λ μ°¨λ¨
- λ§λ£ μ½λ μ°¨λ¨
PENDINGλ‘κ·ΈμΈ μ°¨λ¨ACTIVEλ‘κ·ΈμΈ μ±κ³΅
λ§λ£λ μ΄λμ½λλ‘ νμκ°μ
μλ μ
κ°μ
μ μ€ν¨νμ§λ§ DBμλ ACTIVEλ‘ λ¨μμλ λ¬Έμ λ°μ
κ°μ νΈλμμ μμμ
- μν λ³κ²½
- μμΈ λ°μ
β μ 체 λ‘€λ°±λλ©΄μ μν λ³κ²½λ μ·¨μλ¨
- μ΄λμ½λ μν λ³κ²½ λ‘μ§μ
REQUIRES_NEWνΈλμμ μΌλ‘ λΆλ¦¬
- νμκ°μ μ μ€ν¨
- μ΄λμ½λλ μ μμ μΌλ‘
EXPIREDλ°μ
ν°λ―Έλμμ νκΈ λ‘κ·Έκ° κΉ¨μ§
- UTF-8 μΈμ½λ© μ€μ
- JVM / Gradle / PowerShell μ€μ ν΅μΌ
μ μ μΆλ ₯
/users/me- κ΄λ¦¬μ μΉμΈ κΈ°λ₯
- μ΄λμ½λ κ΄λ¦¬ API
- μμ½ μμ± / μ‘°ν / μ·¨μ
- μΊλ¦°λ μ‘°ν
- κ΄λ¦¬μ μμ½ μμ
- κΆν λΆλ¦¬ κ°ν
- κ³΅ν΅ μμΈ μλ΅ κ΅¬μ‘° μ 리
- λ°°ν¬ νκ²½ ꡬμ±
λ―Όκ° μ 보λ μ½λμ μ§μ ν¬ν¨νμ§ μκ³
νκ²½λ³μ(.env λ±)λ‘ λΆλ¦¬ν΄μ κ΄λ¦¬ν μμ μ
λλ€.
- DB μ μ μ 보
- JWT Secret Key
- κΈ°ν λ°°ν¬ μ€μ
μ΄ νλ‘μ νΈλ λ¨μ CRUD μ°μ΅μ΄ μλλΌ,
- μ΄λ κΈ°λ° νμκ°μ
- κ΄λ¦¬μ μΉμΈ
- μΈμ¦ μ²λ¦¬
- μμ½ μ μ± μ€κ³
μ΄λ° μμλ€μ μ€μ μλΉμ€μ²λΌ ꡬνν΄λ³΄λ κ²μ λͺ©νλ‘ μ§ν μ€μ λλ€.