Ну, мне не известны какие-либо ярлыки при настройке требований и политик 20-i sh, которые удаляли бы отдельные строки при запуске, но вы могли бы подумать о реализации своего рода авторизации на основе настраиваемых ресурсов, а не политики основанный на политике, являющийся декларативным. Декларативное значение означает, что политика настроена заранее. Вот так: [Authorize("policy")]
.
Используя императивную авторизацию, а не декларативную, вы избавитесь от необходимости настраивать x количество политик. Вместо того, чтобы говорить «Авторизовать этот метод», вы позволяете структуре позаботиться об авторизации.
Учитывайте следующие требования
Пользователь должен быть аутентифицирован. Этот пользователь может загрузить файл, только если он удовлетворяет CanUploadFiles, которое является логическим для записи пользователя в базе данных.
Теперь рассмотрим следующий пример
Вы создали свой собственный ICustomAuthorizationHandler, несколько похожий к ASP. NET Core IAuthorizationHandler, за исключением того, что вы не будете удовлетворять политике, но вместо этого вы передадите ему 'CanDoPermission', и он вернет true или false, если этот пользователь имеет эту спецификацию c 'flag'.
public class FileController : Controller
{
private ICustomAuthorizationService _authService
public FileController(ICustomAuthorizationService authService)
{
_authService = authService;
}
[Authorize]
public async Task<IActionResult> Upload(IFormFile file)
{
var authResult = await _authService.AuthorizeAsync(User, "CanDoUpload");
if (!authResult.Succeeded)
{
return new ForbidResult();
}
// Process upload
return View();
}
}
Таким образом, не должно быть политик или требований, настроенных для проверки того, может ли пользователь загрузить файл. Но вам нужно будет позаботиться о многих вещах, которые вы получаете «бесплатно», просто выбрав политики и настроив их в AddAuthorization.