Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
¿Es posible asociar condicionalmente un atributo a una clase en función del valor booleano cargado desde appsettings.json?

Tengo algunas clases de modelos de página y me gustaría hacer que las páginas controladas por estos modelos sean accesibles de forma anónima o solo visibles si el usuario está autenticado en función de un condicional booleano que está configurado en mi archivo appsettings.json . Algo como lo siguiente (la sintaxis es obviamente incorrecta, pero espero que demuestre claramente mi intención).

 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; boolCondition ? [Authorize] : [AllowAnonymous] public class IndexModel : PageModel { ... }

Según esta respuesta aquí , aunque es un poco antigua, en realidad no estoy seguro de si lo que estoy buscando hacer es posible en C#. Y para ser sincero, esa respuesta me supera un poco, así que no sé qué tan aplicable es a mi situación.

Otro posible enfoque que me vino a la mente fue crear mi propia clase de atributo personalizado y, allí, devolver de forma condicional AuthorizeAttribute o AllowAnonymousAttribute en función de la condición booleana. Pero incluso entonces, todavía no estoy seguro de si eso funcionará, ya que parece depender de una condición de tiempo de ejecución.

Cualquier ayuda y consejo es apreciado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Al usar una política de autorización, puede cambiar lo que eso significa en el inicio (o dentro de un servicio IConfigureOptions<AuthorizationOptions> ).

Puede cambiar la política predeterminada para todos los atributos [Authorize] ;

 services.AddAuthorization(o => { var builder = new AuthorizationPolicyBuilder(); if (<something>){ builder.RequireAssertion(c => true); }else{ builder.RequireAuthenticatedUser(); } o.DefaultPolicy = builder.Build(); });

O introduzca una nueva política que solo se aplique a algunos [Authorize(Policy="Name")] .

 services.AddAuthorization(o => { o.AddPolicy("Name", builder => { if (<something>){ builder.RequireAssertion(c => true); }else{ builder.RequireAuthenticatedUser(); } }); });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda