Changes backend in preparation for frontend work
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Logical Components — Unit 0: Backend Prerequisites
|
||||
|
||||
The following logical components and configuration structures are defined to support the NFR implementation.
|
||||
|
||||
## 1. Middleware Ordering (Pipeline Design)
|
||||
The order of middleware registration is critical for security and performance. The pipeline is configured in `Program.cs`.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
Start((Start)) --> Exc[GlobalExceptionHandler]
|
||||
Exc --> RL[Rate Limiter]
|
||||
RL --> CORS[CORS Middleware]
|
||||
CORS --> Auth[Authentication]
|
||||
Auth --> Map[Endpoint Mapping]
|
||||
Map --> End((End))
|
||||
|
||||
classDef infra fill:#cbd5e0,stroke:#1a202c,stroke-width:2px,color:#1a202c;
|
||||
classDef security fill:#feb2b2,stroke:#742a2a,stroke-width:2px,color:#742a2a;
|
||||
classDef core fill:#9ae6b4,stroke:#22543d,stroke-width:2px,color:#22543d;
|
||||
class Start,End,Map infra;
|
||||
class Exc,RL,CORS,Auth security;
|
||||
```
|
||||
|
||||
Text alternative: Sequence of middleware in the ASP.NET Core pipeline (colored nodes indicate role).
|
||||
|
||||
## 2. Configuration Structure (appsettings.json)
|
||||
Following the `dotnet-appsettings` skill pattern, the configuration for NFRs is centralized.
|
||||
|
||||
### CORS Configuration
|
||||
```json
|
||||
"Cors": {
|
||||
"AllowedOrigins": [
|
||||
"https://localhost:5173"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Rate Limiting Configuration
|
||||
```json
|
||||
"RateLimiting": {
|
||||
"Login": {
|
||||
"PermitLimit": 5,
|
||||
"WindowSeconds": 60
|
||||
},
|
||||
"Refresh": {
|
||||
"PermitLimit": 20,
|
||||
"WindowSeconds": 60
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 3. Extension Methods
|
||||
To keep `Program.cs` clean, logical components are encapsulated in `ServiceCollectionExtensions.cs`.
|
||||
|
||||
| Component | Responsibility |
|
||||
|-----------|----------------|
|
||||
| `AddCmsCors()` | Configures the CORS policy based on settings. |
|
||||
| `AddCmsRateLimiting()` | Defines the Fixed and Sliding window policies for auth. |
|
||||
| `AddCmsExceptionHandling()` | Registers the `GlobalExceptionHandler` and ProblemDetails. |
|
||||
|
||||
## 4. ProblemDetails Integration
|
||||
The `GlobalExceptionHandler` will be modified to fully replace the custom `ApiErrorResponse` with standard `ProblemDetails` as the return type. No backward compatibility for the old error format is required.
|
||||
Reference in New Issue
Block a user