2016-03-03 2 views
0

Я построил небольшой api. Я хотел бы реализовать аутентификацию заголовка для моего api. Когда пользователь хочет получить доступ к моему api, он отправит свой apikey вместе с api url. Если apikey был в моей базе данных, ему будет предоставлен доступ, если он не сможет получить доступ к api.как установить проверку заголовка в dropwizard

+0

Я ответил на аналогичный вопрос: http://stackoverflow.com/questions/34304323/issue-with-custom-authorization-in-dropwizard/34334097#34334097 – pandaadb

ответ

0

Если вы хотите аутентифицировать один метод , вы можете искать заголовок непосредственно в самом методе. что-то вроде

@GET 
    public Response processRequest(
      @HeaderParam("X-APIKEY")    
      @DefaultValue("INVALID_OR_GUEST_KEY") String apikey , ...) 

, если вы хотите, чтобы установить это -Всех- (или большинство) ваших методов, то вам лучше с фильтром. Взгляните на http://www.dropwizard.io/0.9.2/docs/manual/core.html#jersey-filters и http://www.dropwizard.io/0.9.2/docs/manual/core.html#servlet-filters. Вы можете реализовать свою логику поиска ключей там

(PS вы также можете рассмотреть вопрос о кешировании, но это уже другая история).

+0

Спасибо Daniele, он отлично работает. Как мы можем создать кеш для API для хранения apikeys, потому что каждый раз, когда попадание в базу данных неэффективно. – Nike

+0

Привет, посмотрите на кэширование guava для этого, возможно: https://github.com/google/guava/wiki/CachesExplained Загрузка кеша, похоже, именно то, что вы хотели бы иметь. – pandaadb

+0

Вы можете использовать что-то вроде memcached (memcached.org) или (особенно, если ваше приложение нуждается в масштабируемом) hazelcast (hazelcast.org). они оба хороши! – Daniele

Смежные вопросы