Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!