ITLab.Template.DevPack.Middleware
Provides ASP.NET Core middleware for culture negotiation, 404 handling and unauthenticated request fallback.
Componentes
| Tipo | Nome | Responsabilidade |
|---|---|---|
| Class | CultureMiddleware | Sets request culture from the Accept-Language header (fallback: en-US) |
| Sealed Class | DevPackIdentityContextMiddleware | Bridges HttpContext.User claims into AsyncLocalCurrentUserAccessor so ICurrentUser consumers see the authenticated user |
| Class | NotFoundMiddleware | Intercepts 404 responses and returns a structured error payload |
| Class | UnauthenticatedFallbackMiddleware | Returns 401 Unauthorized for requests that reach the pipeline without an identity |
Como usar
// Register middleware in the correct pipeline order.
app.UseMiddleware<CultureMiddleware>();
app.UseAuthentication();
app.UseDevPackIdentityContext(); // bridge HttpContext.User → AsyncLocal
app.UseMiddleware<UnauthenticatedFallbackMiddleware>();
app.UseAuthorization();
app.UseMiddleware<NotFoundMiddleware>();
Order matters: UseAuthentication populates HttpContext.User; UseDevPackIdentityContext projects the claims into AsyncLocalCurrentUserAccessor (consumed by RoleBasedPermissionEvaluator and other ICurrentUser consumers); UseAuthorization then evaluates policies. Without the bridge, ICurrentUser.UserRoles is empty in production → 403 on every protected endpoint.
O que não fazer
- Do not place
CultureMiddlewareafterUseRouting— culture must be set before route handlers execute. - Do not use
UnauthenticatedFallbackMiddlewareas a substitute for proper[Authorize]annotations.
Extensão pelo produto
- Products can extend
NotFoundMiddlewareto include product-specific 404 response bodies. - Products can extend
CultureMiddlewareto resolve culture from user profile settings instead of the request header.