Как ввести пользовательский принципал? - PullRequest
1 голос
/ 06 июля 2019

Я использую Java 8, Dropwizard, Guice и Okta.Как должно произойти внедрение пользовательского принципала?Следующее работает при вызове из Application.initialized, но я ищу способ Guice:

// Bind our custom principal to the @Auth annotation
environment.jersey().register(
    new AuthValueFactoryProvider.Binder<>(AccessTokenPrincipal.class));

Я попробовал этот модуль и затем связал его в приложении, но не повезло:

public class AuthModule extends AbstractModule {
  @Override
  protected void configure() {
  }

  @Provides
  public AuthValueFactoryProvider.Binder<AccessTokenPrincipal> providesPrincipalBinder() {
    return new AuthValueFactoryProvider.Binder<>(AccessTokenPrincipal.class);
  }
}

1 Ответ

0 голосов
/ 10 июля 2019

Ознакомьтесь с документацией для @ Предоставляет : «Тип возвращаемого значения метода привязан к его возвращаемому значению».Таким образом, вместо предоставления Binder, вы должны предоставить сам AccessTokenPrincipal *

* Это делается автоматически Guice, если у вас есть конструктор AccessTokenPrincipal, аннотированный @Inject.Конструктор ATP также должен учитывать все свои зависимости.

[EDIT] Я только что просмотрел AuthValueFactoryProvider.Они кажутся вонючими, но вам нужно создать Binder (как вы делали выше).Затем используйте # getProvider , а затем установите этого провайдера в конфигурации модуля, используя bind(ATP.class).toProvider(new<>AVFP(...).Binder<>(ATP).getProvider())

...