Не удается найти класс "Пользователь" для аутентификации Dropwizard - PullRequest
1 голос
/ 30 мая 2019

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

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

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

Это пример Аутентификатора, который я по сути скопировал:

 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», которая не компилируется, поскольку не расширяет Основной класс, необходимый для интерфейса Authenticator.

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

 <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, а об этом просто не упоминалось ни в одном из примеров?

1 Ответ

1 голос
/ 30 мая 2019

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

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

Существует проект dropwizard-example, в котором это демонстрируется:

...