Persiltech.UserServices.Abstractions
0.1.9
See the version list below for details.
dotnet add package Persiltech.UserServices.Abstractions --version 0.1.9
NuGet\Install-Package Persiltech.UserServices.Abstractions -Version 0.1.9
<PackageReference Include="Persiltech.UserServices.Abstractions" Version="0.1.9" />
<PackageVersion Include="Persiltech.UserServices.Abstractions" Version="0.1.9" />
<PackageReference Include="Persiltech.UserServices.Abstractions" />
paket add Persiltech.UserServices.Abstractions --version 0.1.9
#r "nuget: Persiltech.UserServices.Abstractions, 0.1.9"
#:package Persiltech.UserServices.Abstractions@0.1.9
#addin nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.9
#tool nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.9
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.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.
Licencia
MIT. El texto completo viaja dentro del paquete, en el archivo LICENSE, y nuget.org lo
muestra en la pestaña License de la
página del paquete.
| 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.