Не удается найти класс «Пользователь» для проверки подлинности Dropwizard

Я пытаюсь реализовать систему аутентификации в своем приложении Dropwizard, но не могу использовать класс User, который во всех примерах, которые я могу найти, кажется само собой разумеющимся.

Я использую информацию с собственного сайта Dropwizard, которая соответствует различным другим учебникам и примерам, которые я нашел в Интернете, о том, как он реализует аутентификатор.

https://www.dropwizard.io/1.0.0/docs/manual/auth.html

Это пример Authenticator, который я по существу скопировал:

 public class ExampleAuthenticator implements Authenticator<BasicCredentials, User> {
     @Override
     public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException {
         if ("secret".equals(credentials.getPassword())) {
             return Optional.of(new User(credentials.getUsername()));
         }
         return Optional.absent();
     }
 }

Однако, когда я пытаюсь это сделать, единственный способ, которым моя IDE может разрешить зависимость «Пользователь», - это пользователь из библиотеки «org.jetty.eclipse.Authentication», которая не компилируется, поскольку она не расширяет необходимый класс Principal. через интерфейс Authenticator.

Это соответствующая часть моего pom:

 <properties>
    <dropwizard.version>1.3.5</dropwizard.version>
</properties>

<dependencies>

    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-core</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>

    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-jdbi</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>

    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-auth</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>


</dependencies>

Код либо отказывается компилироваться, потому что Jetty-версия «User» не соответствует интерфейсу, либо потому, что не может найти другую версию «User». Есть ли зависимость, которую мне не хватает? Должен ли я реализовывать свой собственный класс User, а об этом просто не упоминалось ни в одном из примеров?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны предоставить свою собственную реализацию класса интерфейса Principle. Обратите внимание на следующее предложение из документации и второй параметр шаблона:

Authenticators implement the Authenticator<C, P extends Principal> interface, which has a single method:

Есть проект dropwizard-example, где это продемонстрировано:

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