Нужна дополнительная переменная пути в маршруте Spring Data REST API для Spring Security - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над 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, так как вся информация об учетной записи обрабатывается сервером авторизации.

Заранее большое спасибо за любую помощь или руководство!

...