Авторизация параметров трассы фреймворка

У меня есть REST API на моей странице, и для аутентификации я использую сеанс Play.

Проблема с авторизацией, у меня десятки конечных точек выглядят так:

GET          /api/domains/:domainId/properties/:propertyId/reports   

Я мог бы добавить и if оператор для каждого метода контроллера, чтобы проверить, есть ли у пользователя разрешения на этот домен или свойство, но могу ли я как-то обработать его глобально?

Я нашел этот модуль, но он, кажется, не обрабатывает параметры, просто проверяет, находится ли пользователь в какой-либо группе / роли или нет. https://www.playframework.com/documentation/1.0.2.1/secure

2 ответа

Решение

Я решил это с помощью пользовательского RequestHandler. Там вы можете извлечь параметры из пути и проверить их. (В Scala я мог бы даже изменить маршрут запроса, чтобы избежать повторения этих параметров во всех маршрутах, я не знаю, можно ли сделать это и в Java). (См.: https://www.playframework.com/documentation/2.4.x/JavaHttpRequestHandlers)

Вы можете использовать аннотацию Security.Authenticated, как описано здесь. Для более конкретных разрешений, я рекомендую Deadbolt

Другие вопросы по тегам