Я создаю REST API, для которого несколько пользователей с разными ролями будут иметь доступ к содержащимся в нем ресурсам.
Для простоты, давайте возьмем домен "ученик / учитель / класс":
GET /students
ресурс для доступа.
У пользователей могут быть роли, такие как Студент и / или Учитель
Студенты будут иметь доступ только к ученикам своих классов. Учителя будут иметь доступ к ученикам классов, которые они преподают. В некоторых случаях ученик И может преподавать и другие классы. Они должны иметь доступ к ученикам своих классов и ученикам классов, которые они преподают.
В идеале я хочу реализовать это как две функции - по одной на роль и затем «объединение», если у пользователя несколько ролей.
Мой вопрос: какой шаблон я должен использовать для реализации этого?
внешне
- Должен ли я разделить свой API на роль?
GET /teacher/students
иGET /student/students
это не кажется мне правильным. - Держите все это я один ресурс (предпочтительно)
внутренне
Как это должно быть реализовано внутри?
- Должен ли каждый метод начинаться с БОЛЬШОГО переключателя / если для каждой роли?
- Должен ли я реализовать хранилище для каждой роли?
- Есть ли шаблон дизайна, который поможет мне в достижении этого?
В качестве дополнительного комментария: я использую ASP.NET Web API и Entity Framework 6 , но это не имеет значения для концептуальной реализации.