Persiltech.UserServices.Abstractions
0.1.12
dotnet add package Persiltech.UserServices.Abstractions --version 0.1.12
NuGet\Install-Package Persiltech.UserServices.Abstractions -Version 0.1.12
<PackageReference Include="Persiltech.UserServices.Abstractions" Version="0.1.12" />
<PackageVersion Include="Persiltech.UserServices.Abstractions" Version="0.1.12" />
<PackageReference Include="Persiltech.UserServices.Abstractions" />
paket add Persiltech.UserServices.Abstractions --version 0.1.12
#r "nuget: Persiltech.UserServices.Abstractions, 0.1.12"
#:package Persiltech.UserServices.Abstractions@0.1.12
#addin nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.12
#tool nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.12
Persiltech.UserServices.Abstractions
Define la interfaz IUserService, un Output Port que expone el estado de autenticación y la identidad del usuario actual, para que cualquier solución basada en Arquitectura Limpia lo consuma.
Instalación
dotnet add package Persiltech.UserServices.Abstractions
El contrato
namespace Persiltech.UserServices.Abstractions;
public interface IUserService
{
bool IsAuthenticated { get; }
string? UserName { get; }
string? FullName { get; }
}
UserName y FullName son anulables de forma deliberada: un usuario no autenticado no tiene identidad que exponer, y uno autenticado puede no traer ese dato según el mecanismo de autenticación de la solución consumidora. El consumidor decide qué hacer ante la ausencia del dato; el contrato no impone un valor de reemplazo.
Uso
La capa de aplicación depende únicamente de la interfaz:
public sealed class CreateOrderHandler(IUserService userService)
{
public Order Handle(CreateOrderCommand command)
{
if (!userService.IsAuthenticated)
{
throw new UnauthorizedAccessException();
}
return new Order(command.ProductId, userService.UserName);
}
}
Implementar el adaptador
Este paquete no trae ninguna implementación: el adaptador de infraestructura y su registro en el contenedor corresponden a la solución consumidora. Un adaptador típico de ASP.NET Core resuelve el contrato desde HttpContext.User:
public sealed class HttpContextUserService(IHttpContextAccessor httpContextAccessor) : IUserService
{
public bool IsAuthenticated =>
httpContextAccessor.HttpContext?.User.Identity?.IsAuthenticated ?? false;
public string? UserName =>
httpContextAccessor.HttpContext?.User.Identity?.Name;
public string? FullName =>
httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.GivenName)?.Value;
}
Y se registra en el proyecto que compone la aplicación:
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<IUserService, HttpContextUserService>();
Decisiones de diseño
- Paquete de puros contratos: no incluye ninguna implementación concreta de
IUserService; cada solución consumidora provee su propio adaptador de infraestructura. - Sin dependencias a
Microsoft.AspNetCore.*ni a ningún framework de hosting, para poder referenciarse desde una capa de dominio o de aplicación sin arrastrar dependencias de infraestructura. - Sin registro en el contenedor de dependencias: no hay implementación que registrar.
Compatibilidad
net10.0
Estado
Versión 0.x: la superficie pública puede cambiar entre versiones menores.
Historial de versiones
El código fuente no es público, así que este es el registro de cambios del paquete.
| Versión | Cambios |
|---|---|
| 0.1.12 | Publica la versión que la etiqueta v0.1.12 no llegó a subir. |
| 0.1.11 | Apartado de licencia retirado; ya lo publica nuget.org. |
| 0.1.10 | Historial de versiones al día en el README. |
| 0.1.9 | Insignia de licencia enlazada al texto real, no a la plantilla. |
| 0.1.8 | Licencia publicada como archivo dentro del paquete. |
| 0.1.7 | Metadata de empaquetado adaptada a un repositorio privado. |
| 0.1.6 | Enlace absoluto al texto de la licencia en el README. |
| 0.1.5 | Icono del paquete y documentación al día. |
| 0.1.4 | Documentación y metadata de empaquetado al día. |
| 0.1.0 – 0.1.3 | Primeras publicaciones de IUserService. |
La superficie pública no ha cambiado desde 0.1.0: todo lo publicado hasta ahora
son cambios de documentación y de metadata del paquete.
Soporte
El código fuente de este paquete no es público. Para dudas, informes de error o peticiones de mejora, usa la página del paquete.
Apoya el desarrollo
Si el paquete te ahorra trabajo, puedes apoyar su mantenimiento en GitHub Sponsors.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Persiltech.UserServices.Abstractions:
| Package | Downloads |
|---|---|
|
Persiltech.UserServices
Implementación para ASP.NET Core de IUserService, el Output Port que define Persiltech.UserServices.Abstractions, que resuelve la identidad y el estado de autenticación del usuario actual a partir de HttpContext.User. |
GitHub repositories
This package is not used by any popular GitHub repositories.