.Net Core Авторизация при отображении данных в представлении - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь добавить логику авторизации в мое веб-приложение .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 Ответ

0 голосов
/ 13 ноября 2018

Не уверен, что мне нужно написать много обработчиков для реализации логики, как показано в этом примере?

Нет необходимости, вы можете определить один PermissionHandler, который будетпроверьте разрешение пользователя в HandleAsync.

как я могу вызвать логику в качестве атрибута выше метода редактирования / удаления в контроллере?

Для вызова в качестве атрибута вы можете попробовать как

[Authorize(Policy = "Read")]
[HttpPost("delete")]
public IActionResult Delete([FromBody]Item item)
{
  _itemService.Delete(item.Id);
  return Ok();
}

Для полной демонстрации попробуйте обратиться к Различные функции API для разных ролей .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...