Я использую ASP.NET Core 2.1 с авторизацией на основе политик для групп Active Directory, настроенных в appsettings.json
.У меня есть несколько вызовов для настройки каждой политики, подобной следующей:
services.AddAuthorization(options =>
{
options.AddPolicy("UserGroup"), policy =>
{
policy.RequireAuthenticatedUser();
policy.RequireRole(jsonAuthSection.UserGroup);
});
});
Я украшаю различные контроллеры API с различными политиками по мере необходимости следующим образом:
[Authorize("UserGroup")]
Однако у меня теперь есть моделигде некоторые свойства требуют административного членства для изменения.Чтобы упростить это, я использую типы, допускающие значения NULL, и когда свойство связано (подразумевается, что было указано изменение / значение), мне нужно проверить наличие дополнительных разрешений:
AuthorizationResult isAdmin = await this.authorizationService.AuthorizeAsync(this.User, "AdminGroup");
if (updateModel.Locked != null && !isAdmin.Succeeded)
{
return this.StatusCode(StatusCodes.Status401Unauthorized, "some message");
}
// More checks...
Пользователям предлагается ввести учетные данные вместо простого сбоя.Какова более подходящая стратегия для достижения этой цели?