0
BacicAuthのヘッダーが指定されていない場合、私の認証メカニズムがデフォルトユーザーを返すようにします。私は、このようにそれを実行しようとしました:Dropwizard Auth - ヘッダーが指定されていない場合にデフォルトユーザーを返す方法
@Override
public Optional<User> authenticate(final BasicCredentials basicCredentials) throws AuthenticationException {
String email = basicCredentials.getUsername();
String plaintextPassword = basicCredentials.getPassword();
final Optional<User> user = Optional.of(userDao.getUserByEmail(email));
if (user.isPresent()) {
return user;
}
else {
return Optional.of(defaultUser);
}
}
しかし、私は適切なヘッダーのない要求を行う際に何らかの形で、私はまだ401を取得します。
どうすればいいですか?
DW
env.jersey().register(PreAuthenticationFilter.class);
に登録!それは完全に働いた – VanDavv質問は、フィルタを使用する場合は、なぜそのフィルタですぐに認証をしないのですか?私の意見では、DW認証は、私が重要だと感じる制御を取り除くので、少し欠陥があります。私はDWのアプローチを使用して、フィルタでauthを行うことを好む。多くの人が私と同じ問題に遭遇しました。 – pandaadb
authN/authZチェーンにはいくつかのフィルタがあります。まず、認証フィルタです。 Dropwizardは、このフィルタでオーセンティケータを使用します。認可者を呼び出すJersey認可(rolesallowed)フィルター。異なるフィルタでは異なる処理が行われます。たぶん、あなたが欠点を見るのはプロセスではなく、認証フィルタの実装です。特定のユースケースについては、はい、私はそれがこの作品を使用しなければならない負担であることに同意します。しかし、それは実装されている方法です。 –