2015-12-02 3 views
1

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

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

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

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

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

+0

Вы не упоминаете, какую версию игры вы используете – Gus

+0

@Gus это 2,3, как в тегах – Jaanus

ответ

1

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

+0

Работает хорошо. Пришлось обновить до 2.4 для этого, но эй, почему бы и нет. – Jaanus

0

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

+0

я вижу, что позволяет мне использовать роли и группы, но, как мне делать разрешение на основе по параметрам маршрута? – Jaanus

+0

Это не так. Способ, которым я занимаюсь, - это обработать его в каждом методе контроллера. Я предполагаю, что это возможно с помощью пользовательских аннотаций действий (https://www.playframework.com/documentation/2.3.x/JavaActionsComposition#Defining-custom-action-annotations), но я не пробовал это сам. – Gus