.Net Core Авторизация при отображении данных в представлении
Я пытаюсь добавить логику авторизации в мое веб-приложение.net core, чтобы только автор (записанный в каждой записи базы данных как имя пользователя) разрешал редактировать / удалять действия, которые могут читать только другие.
Я немного погуглил, похоже, что авторизация на основе ресурсов может удовлетворить мои требования: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/resourcebased?view=aspnetcore-2.1&tabs=aspnetcore2x
Не уверен, что мне нужно написать много обработчиков для реализации логики, как показано в этом примере? https://docs.microsoft.com/en-us/aspnet/core/security/authorization/secure-data?view=aspnetcore-2.1
Насколько я понимаю, логика выглядит так:
If current login user == the created by user in database record
Display edit/delete link.
Allow access the edit/delete action method in Controller.
Else
Access is denied.
Должен ли я следовать образцу кода или написать свой собственный класс авторизации? И если проще написать свой собственный класс логики авторизации, как я могу вызвать логику как атрибут выше метода действия edit / delete в контроллере?
Спасибо.
1 ответ
Не уверен, что мне нужно написать много обработчиков для реализации логики, как показано в этом примере?
Там нет необходимости, вы могли бы определить один PermissionHandler
который проверит разрешение пользователя в HandleAsync
,
Как я могу вызвать логику как атрибут выше редактировать / удалить метод действия в контроллере?
Для вызова в качестве атрибута, вы можете попробовать как
[Authorize(Policy = "Read")]
[HttpPost("delete")]
public IActionResult Delete([FromBody]Item item)
{
_itemService.Delete(item.Id);
return Ok();
}
Для полной демонстрации попробуйте ссылаться на разные функции API для разных ролей.