Я работаю над API-интерфейсом Spring Data REST (действующим в качестве сервера ресурсов с использованием oAuth), для которого у меня есть два хранилища (формы и вопросы). Формы могут иметь один или несколько вопросов.
Пользователи приложения принадлежат к одной или нескольким учетным записям (с разными ролями в каждой), и они должны иметь возможность создавать формы для определенных учетных записей. Итак, Форма имеет поле account_id .
Итак, Spring Data REST дает мне все конечные точки CRUD, и это здорово. Например:
GET/POST /v1/forms
GET/PUT/DELETE/PATCH /v1/forms/{id}
GET/POST/PUT/DELETE/PATCH /v1/forms/{id}/questions
GET /v1/forms/{id}/questions/{questionid}
Однако для авторизации мне нужно разрешить доступ и редактировать права на Формы в зависимости от идентификатора учетной записи .
Итак, я думаю (и безуспешно огляделся), можно ли добавить account_id как часть пути и использовать этот подход (https://docs.spring.io/autorepo/docs/spring-security/4.2.x/reference/html/el-access.html#el-access-web-path-variables), чтобы разрешить или запретить доступ через Spring Security в зависимости от этого. Например:
GET/POST /v1/{account_id}/forms
GET/PUT/DELETE/PATCH /v1/{account_id}/forms/{id}
GET/POST/PUT/DELETE/PATCH /v1/{account_id}/forms/{id}/questions
GET /v1/{account_id}/forms/{id}/questions/{questionId}
Или, может быть, существует другой подход, предложенный для приложений Spring Data REST и HATEOAS (например, использование параметра запроса вместо параметра пути?), Поскольку у меня нет ресурса Account, как у меня с Form или Question, так как вся информация об учетной записи обрабатывается сервером авторизации.
Заранее большое спасибо за любую помощь или руководство!