Конечная точка API, которая зависит от аутентифицированного пользователя - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть следующие объекты:

public class Company { 
  public Int32 CompanyId { get; set; }
  public String Name { get; set; }
} 

public class Project { 
  public Int32 ProjectId { get; set; }
  public String Name { get; set; }
  public virtual Company { get; set; }
} 

public class ProjectUser { 
  public Int32 UserId { get; set; }
  public String ProjectId { get; set; }
} 

public class User { 
  public Int32 UserId { get; set; }
  public String Name { get; set; }
} 

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

companies/{companyId}/projects

Этот URL имеет смысл, но возврат проектов должен быть ограниченto:

  1. Проекты в предоставленной компании, с которой связан текущий аутентифицированный пользователь (ProjectUser);

    ИЛИ

  2. Все проекты в предоставленной компании, если текущий аутентифицированный пользователь является системным администратором.

Вопрос

Таким образом, этот запрос зависит от аутентифицированного пользователя ...

Должен ли я отправить UserId в запросеа затем проверить его разрешения в API?
Если да, каким должен быть URL, например, companies/{companyId}/projects?

Или мне просто получить аутентифицированного пользователя и проверить его разрешения в API, не отправляяидентификатор пользователя в запросе?

1 Ответ

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

Последний.Ваш запрос должен быть авторизован, скорее всего, путем отправки заголовка Authorization с ранее полученным токеном доступа.Вы не должны и не должны отправлять идентификатор пользователя вместе с запросом.Это будет получено через принципала пользователя, в частности, через претензию NameIdentifier.Что касается вашей авторизации на уровне ресурсов, вы будете использовать идентификатор пользователя, полученный от принципала, чтобы гарантировать, что аутентифицированный пользователь имеет доступ к указанному ресурсу, чаще всего через внешний ключ на самом ресурсе.У документов есть более обширное руководство.

...