Ich möchte, dass mein Autorisierungsmechanismus Standardbenutzer zurückgibt, wenn Header für BacicAuth nicht angegeben ist. Ich habe versucht, es so zu tun:Dropwizard Auth - Wie Standardbenutzer zurückgeben, wenn Header nicht gegeben ist?
@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);
}
}
Aber irgendwie habe ich noch 401 erhalten, wenn ich eine Anfrage ohne richtigen Kopf machen.
Wie kann ich es funktionieren lassen?
Dank! Es funktionierte perfekt – VanDavv
Frage ist, wenn Sie den Filter verwenden, warum nicht Auth in diesem Filter sofort? Meiner Meinung nach ist das DW-Auth ein bisschen fehlerhaft, da es etwas Kontrolle wegnimmt, die ich für wichtig halte. Ich bevorzuge Auth in den Filter über die Verwendung von DW-Ansatz. Viele Leute haben das gleiche Problem, denke ich. – pandaadb
Es gibt ein paar Filter in der authN/authZ-Kette. Zuerst ist der Authentifizierungsfilter. Dropwizard verwendet Ihren Authentifikator in diesem Filter. Der Jersey Autorisierungs (rolesallowed) Filter, der Ihren Authorizer aufruft. So unterschiedliche Filter behandeln verschiedene Dinge. Vielleicht ist das, was Sie fehlerhaft sehen, nicht der Prozess, sondern die Implementierung des Authentifizierungsfilters. Für Ihren speziellen Anwendungsfall, ja, stimme ich zu, dass es eine Last ist, diese Arbeit zu nutzen. Aber so ist es implementiert. –