找不到用于 Dropwizard 身份验证的 "User" class

Can't find "User" class for Dropwizard Authentication

我正在尝试在我的 Dropwizard 应用程序中实施身份验证系统,但我无法使用我能找到的所有示例似乎都认为是理所当然的用户 class。

我使用的是来自 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 可以解决 "User" 依赖项的唯一方法是作为 "org.jetty.eclipse.Authentication" 库中的用户,但无法编译,因为它不扩展 Authenticator 接口所需的 Principal class。

这是我的 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>

代码拒绝编译,因为 "User" 的 Jetty 版本不适合该接口,或者因为找不到任何其他版本的 "User"。我缺少依赖性吗?我是否应该实现自己的用户 class,而这在任何示例中都没有提到?

您应该提供自己的 Principle 接口 class 实现。请注意文档中的以下句子和第二个模板参数:

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

dropwizard-example 项目对此进行了演示: