기능 추가
API ν΅μ¬κ³Ό νλ‘ νΈμλ μΈμλ, μ€μ νλ‘μ νΈμμλ 보μ, μ κ·Ό μ μ΄ λ° λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€ μ€νμ μν μΆκ° κΈ°λ₯μ΄ μμ£Ό νμν©λλ€.
Linoλ μ΄λ¬ν κΈ°λ₯μ νμ€νλ λ°©μμΌλ‘ μΆκ°ν μ μλλ‘ μ§μνλ©°, λ°±μλ(μλν¬μΈνΈ)μ νλ‘ νΈμλ(Blazor μ ν리μΌμ΄μ ) λͺ¨λμ λ°μλ©λλ€.
보μ λ° μΈμ¦
μΈμ¦μ λͺ¨λ 보μ μμ€ν μ κΈ°λ³Έμ λλ€. Linoλ APIμμ Bearer λ°©μμ μ¬μ©νμ¬ JWT(JSON Web Tokens) κΈ°λ° μΈμ¦μ μ§μν©λλ€.
μΌλ°μ μΈ μΈμ¦ νλ¦:
1. μ¬μ©μκ° λ‘κ·ΈμΈ μν(μλν¬μΈνΈ λλ μ μ© νμ΄μ§λ₯Ό ν΅ν΄).
2. μ¬μ©μ μ 보, μν λ° κΆνμ λνλ΄λ claimsκ° ν¬ν¨λ JWT λ°κΈ.
3. λͺ¨λ API μμ²μ ν€λμ ν ν° ν¬ν¨: Authorization: Bearer <token>
4. μΈμ¦ λ―Έλ€μ¨μ΄κ° ν ν°μ κ²μ¦νκ³ μλͺ
κ³Ό λ§λ£λ₯Ό νμΈ.
μ μ± κΈ°λ° κΆν λΆμ¬
Linoλ μΈλΆνλ κΆν λΆμ¬λ₯Ό μν΄ μ μ± (Policies)μ μ¬μ©ν©λλ€:
- κ° μμ μ νΉμ μ μ± μ΄ νμν μ μμ(μ: People.Read, People.Create).
- μ μ± μ AddAuthorizationμ ν΅ν΄ ꡬμ±.
- μλν¬μΈνΈλ λ€μμ μ μΈνμ¬ λ³΄νΈ κ°λ₯:
.RequireAuthorization
Lino νλ‘μ νΈμ 보μ μΆκ°
νλ‘μ νΈμ 보μμ μΆκ°νλ €λ©΄ λ€μμ μ€ν:
lino features auth add
CLI μΈν°λν°λΈ λ§λ²μ¬κ° λ€μ μ€μ μ μμ²ν©λλ€:
- μλΉμ€ β 보μ 리μμ€κ° ꡬμ±λ μλΉμ€.
- λͺ¨λ β 보μμ΄ μ€μΉλ νΉμ λͺ¨λ(λͺ¨λν μλΉμ€μλ§ μ μ©).
- Access Token μλͺ β μ‘μΈμ€ ν ν°μ μ ν¨ κΈ°κ°.
- Refresh Token μλͺ β κ°±μ ν ν°μ μ ν¨ κΈ°κ°.
- μ¬μ©μ μλ³μ μ ν β UserIdλ‘ μ¬μ©λλ λ°μ΄ν° μ ν μ μ(
int,longλλGuid).
μ΄λ¬ν μ€μ μ μΈμ¦/κΆν λΆμ¬ νμ΄νλΌμΈμ΄ μλμΌλ‘ ꡬμ±λμ΄ APIμμ λ°λ‘ μ¬μ©ν μ μμΌλ©° Blazorμ ν΅ν©λ©λλ€.
λ°±κ·ΈλΌμ΄λ μμ
λ§μ μμ€ν μμλ λ€μκ³Ό κ°μ λ°±κ·ΈλΌμ΄λ λΉλκΈ° νλ‘μΈμ€λ₯Ό μ€νν΄μΌ ν©λλ€:
- μ΄λ©μΌ μ μ‘
- 리ν¬νΈ μμ±
- μΈλΆ μμ€ν κ³Όμ λκΈ°ν
Linoλ μμ μ€μΌμ€νΈλ μ΄ν°λ‘ Hangfireλ₯Ό κΈ°λ³Έμ μΌλ‘ μ§μν©λλ€.
Hangfireμ μ₯μ
- λΉλκΈ° μμ μ μμ μ μΈ μ€ν
- λ΄μ₯ λͺ¨λν°λ§ λμ보λ
- λ°λ³΅ λλ μμ½ μμ μ§μ
- λ°μ΄ν°λ² μ΄μ€μ μμ μ μμ μ μΈ μμμ±
Outbox λ©μμ§μ μ΄λ²€νΈ ν΅ν©
λΉλκΈ° ν΅ν©μ μΌκ΄μ±μ 보μ₯νκΈ° μν΄ Linoλ Outbox Message ν¨ν΄μ μ±νν©λλ€.
λΉμ¦λμ€ μμ (μ: μ£Όλ¬Έ μμ±)μ μννλ©΄, ν΄λΉ μ΄λ²€νΈ(OrderCreated)κ° λλ©μΈ μνλ₯Ό μ μ₯νλ λμΌν νΈλμμ μμ Outbox ν μ΄λΈμ μ μ₯λ©λλ€. λ°±κ·ΈλΌμ΄λ νλ‘μΈμλ Outbox ν μ΄λΈμ μ½κ³ μ΄λ²€νΈλ₯Ό λ©μμ§ μμ€ν (RabbitMQ, Kafka λ±)μ κ²μν©λλ€.
Outboxμ μ₯μ :
- μμμ± β λ°μ΄ν°λ² μ΄μ€μ κ²μλ μ΄λ²€νΈκ° λκΈ°ν μν μ μ§
- μ λ’°μ± β μ€ν¨ μμλ μ΄λ²€νΈ μμ€ μμ
- νμ₯μ± β μ¬λ¬ μλΉμκ° μ΄λ²€νΈλ₯Ό μ²λ¦¬ κ°λ₯
μ΄ λͺ¨λΈμ λΆμ° μν€ν μ²μμ μμ νκ³ μμ μ μΈ ν΅ν©μ 보μ₯ν©λλ€.
μ΄λ¬ν μΆκ° κΈ°λ₯μ ν΅ν΄ Linoλ κ°λ ₯ν 보μ, μΈλ°ν μ κ·Ό μ μ΄, μ λ’°ν μ μλ λΉλκΈ° μ²λ¦¬λ₯Ό μ 곡νλ©°, νλ νλ‘λμ μ ν리μΌμ΄μ μ ν΅μ¬ μꡬμ¬νμ μΆ©μ‘±ν©λλ€.
Lino νλ‘μ νΈμ λ°±κ·ΈλΌμ΄λ μμ κΈ°λ₯ μΆκ°
λΉλκΈ° μ²λ¦¬λ μλ¦Ό μ μ‘, 리ν¬νΈ μμ±, μ΄λ²€νΈ κ²μ λ± μ£Ό μμ² νλ¦μ μ°¨λ¨νμ§ μμμΌ νλ μμ μ νμμ μ λλ€.
Linoλ λ¨μΌ λͺ λ ΉμΌλ‘ λ°±κ·ΈλΌμ΄λ μμ μ§μ(λΌμ΄λΈλ¬λ¦¬ μ¬μ©)μ νμ±νν μ μμ΅λλ€:
lino features background-job add
CLIλ λ€μ κ΅¬μ± λ§€κ°λ³μλ₯Ό μμ²ν©λλ€:
- μλΉμ€ β λ°±κ·ΈλΌμ΄λ μμ κΈ°λ₯μ΄ μΆκ°λ μλΉμ€
- λΌμ΄λΈλ¬λ¦¬ β μμ μ€ν λ° μμ½μ μν μ νλ λΌμ΄λΈλ¬λ¦¬
- μ²΄ν¬ λ° μ²λ¦¬ κ°κ²© - Outbox μ λ©μμ§λ₯Ό νμΈν ν κ²μ¬ κ°κ²©
- λ μ½λ μ - μ¬μ΄ν΄λΉ μ²λ¦¬ν μ΅λ λ μ½λ μ, λ³λ ¬ μ²λ¦¬ λ° λ¦¬μμ€ μλΉ μ μ΄
μ΄λ¬ν μ΅μ μ μμ€ν μ νμ₯ κ°λ₯νκ³ μμ μ μΌλ‘ ꡬμ±νμ¬ λ°±κ·ΈλΌμ΄λ μμ μ μ λ’°ν μ μλ μ€νμ 보μ₯ν©λλ€.
