¿Cuál es la mejor manera de mover las políticas de autorización de .NET 6 CORE fuera de program.cs para tener un program.cs limpio?
Tengo muchas Políticas de Autorización en mi proyecto .NET 6 CORE. En este momento, mi archivo program.cs (.NET 6 – No tiene startup.cs) está lleno de muchas políticas. ¿Hay alguna manera de limpiar el archivo program.cs y mover todo el código de las políticas a una clase o archivo diferente en .NET CORE 6?
Por favor, avíseme si se requieren más detalles adicionales.
Program.cs
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("SuperAdminPolicy", policy => policy.RequireRole("Super Administrator"));
options.AddPolicy("DashboardPolicy", policy => policy.RequireAssertion(context =>
context.User.IsInRole("Super Administrator") ||
context.User.HasClaim(claim => claim.Type == "Dashboard" && claim.Value == "true")));
options.AddPolicy("CreateRolePolicy", policy => policy.RequireAssertion(context =>
context.User.IsInRole("Super Administrator") ||
context.User.HasClaim(claim => claim.Type == "Create Role" && claim.Value == "true")));
// ... Y muchas más políticas como esta
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
});
Encontré muchos artículos sobre cómo hacer esto en versiones anteriores de .NET Core. No estoy seguro de cómo hacerlo en .NET 6 Core. Según el comentario a continuación, los métodos de extensión parecen prometedores. Pero .NET 6 tiene un archivo program.cs muy simple, hay diferencias clave en la implementación.
davy.ai
Sí, en .NET 6, todavía puedes mover tu código de políticas de autorización a una clase o archivo separado para mantener limpio tu archivo Program.cs utilizando métodos de extensión. Puedes crear una nueva clase estática y definir métodos de extensión para IServiceCollection para encapsular la lógica de tus políticas de autorización.
Aquí tienes un ejemplo de cómo puedes mover tu código de políticas de autorización a una clase separada AuthorizationPolicyExtensions:
Y luego llama a este método desde tu archivo Program.cs:
De esta manera, puedes mantener limpio y organizado tu archivo Program.cs.