2015-04-16 4 views
1

Кто-нибудь знает, как я могу расширить интерфейс dropwizard? Теперь у него есть только нужный параметр, но мне нужно добавить права на метод с удалением.Dropwizard extend @Auth interface

Например:

У меня есть админ пользователя и обычный пользователь. Оба могут аутентифицироваться и доходить до моего @auth аннотированного ресурса. Но я хочу разрешить некоторый (не все) HTTP-запрос метода только для админов и разочарование для обычного пользователя. Как я могу сделать это за пределами ressource? Что-то вроде

@Auth(required = true, right="admin", httpMethod="POST") User user) 
@Auth(required = true, right="normalUser", httpMethod="GET") User user) 
@Auth(required = true, right="masterOfTheuniverse", httpMethod="*") User user) 

ответ

1

Поскольку наследование аннотаций не поддерживается Java; вы не можете.

У меня был подобный случай, поэтому я закончил копирование соответствующих классов из dropwizard и изменил, как я пожелал. Я объединил AuthFilter с OAuthCredentialFilter, так как мне не нужна абстракция, и я использовал свой собственный класс вместо Authenticator<C,P>.

Примечание: Я просто понял, у них есть rewritten логик @Auth с помощью RequestFilters для следующего выпуска, который выглядит более гибким и может удовлетворить ваши потребности (я мог бы просто перейти на это тоже). Текущая версия (0.8.x) использует Factory s, которую вы можете найти на Java8 implementation. Также Auth annotation, который больше не находится в мастер-ветке.

+0

Теперь я делаю то же самое. – heaphach