Я немного новичок в веб-разработке. У меня есть RestController, который имеет много методов, например (Получить, GetById, Создать, Обновить). Я использую атрибут Authorize, который используется с политикой. Эта политика зависит от переменной bool. Вы можете увидеть ниже.
Сейчас я использую этот обходной путь, но я ищу более подходящее решение.
services.AddAuthorization(o =>
{
o.AddPolicy("UserRoleCheck", p =>
{
if (C.RequiredAuth)
{
p.RequireAuthenticatedUser();
p.AssertRole(Roles.User);
}
else
{
p.AddRequirements(new EmptyRequirement()); // Here I don't want to else branch
}
});
});
public class EmptyRequirement : AuthorizationHandler<EmptyRequirement>, IAuthorizationRequirement
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, EmptyRequirement requirement)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
}
Это работа, но можете ли вы предложить мне более красивое решение?