Конечные точки API для пользователей и администраторов пользователей - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть следующие ресурсы в API:

Компания> Проект> ProjectUser> Пользователь

Ресурсы связаны следующим образом:

  1. У одной компании есть много проектов;

  2. ProjectUser определяет пользователей, которые могут получить доступ к проекту;

Я определяю конечные точки API для получения проектов:

"/projects" > Get all projects that authenticated user can access        

"/companies/{companyId}/projects" > Get projects with `companyId` that authenticated user can access

Мне нужны еще 3 конечные точки, доступные только пользователям, которые являются администраторами:

  1. Получить все проекты всех пользователей

  2. Получить все проекты пользователя с данным UserId;

  3. Получить проекты с companyId пользователя с данным UserId.

Как должны стать 5 конечных точек?

1 Ответ

0 голосов
/ 11 февраля 2019

В таких ситуациях для пользовательских ресурсов обычно добавляется префикс типа my, me, user и т. Д. Например: /my/projects и /my/companies/{companyId}/projects.Это помогает различать общие запросы, которые просто нуждаются в аутентификации, но не в фильтрации ресурсов, например, в случае администратора.Для запросов администратора вы должны достичь конечных точек /projects и /companies/{companyId}/projects.Затем вы можете защитить эти конечные точки чем-то вроде [Authorize(Roles = "Admin")] и, предположив, что пользователь является администратором, они получат все проекты.Принимая во внимание, что для my маршрутов с префиксом просто потребуется [Authorize], чтобы гарантировать наличие аутентифицированного пользователя, а затем использовать авторизацию на уровне ресурсов для возврата только проектов, принадлежащих этому пользователю.

...