[JAVA] In Spring-Security ist die Weiterleitungs-URL meines Anmeldebildschirms falsch und die Anmeldung schlägt fehl.

Phänomen

Wenn Sie sich in der Spring-Security-Umgebung anmelden, schlägt dies nur beim ersten Mal fehl und Sie werden ab dem zweiten Mal normal authentifiziert.

Ursache

Die Methode zum Erstellen der Umleitungs-URL zum Selbstanmeldebildschirm war falsch.

Einzelheiten

Die folgenden Controller waren darauf vorbereitet, den eigenen Anmeldebildschirm anzuzeigen.

@Controller
@RequestMapping("/login")
public class LoginController {
    @GetMapping
    public String index(Optional<String> error) {
        ...
    }
}

Als nächstes habe ich den folgenden Controller vorbereitet, um zu `/ login``` umzuleiten, als ich zu` / `` `kam.

@Controller
public class TopController {
    @GetMapping("/")
    public String index() {
        return "redirect:" + MvcUriComponentsBuilder.fromMethodName(LoginController.class, "index", "").build().toUri().toString();
    }
}

Diese Spezifikationsmethode ist jedoch falsch und die Umleitungs-URL wird zu "http: // localhost: 8080 / login? Fehler falsch". Einfach ausgedrückt dient diese URL zur Anzeige von Anmeldefehlern.

Wenn Sie zu dieser URL umleiten, wird zunächst der Anmeldebildschirm angezeigt. Übrigens hat Spring-Security eine Funktion namens "SavedRequest". Wenn vor dem Anmelden auf eine URL zugegriffen wurde, wird diese nach dem Anmelden zu dieser URL übersprungen. Die letzte URL in diesem Fall lautet "Anmelden? Fehler falsch" für Anmeldefehler. Aus diesem Grund wird bei erfolgreicher Anmeldung die URL des Anmeldefehlers übersprungen.

Bewältigung

Die Verwendung von MvcUriComponentsBuilder wurde geändert.

return "redirect:" + MvcUriComponentsBuilder.fromController(LoginController.class).build().toUri().toString();

Ich habe die Beziehung zwischen `` `MvcUriComponentsBuilder``` und Optional </ code> nicht wirklich verstanden, also habe ich einen Kompromiss geschlossen.

Recommended Posts

In Spring-Security ist die Weiterleitungs-URL meines Anmeldebildschirms falsch und die Anmeldung schlägt fehl.
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Rufen Sie die URL des HTTP-Umleitungsziels in Ruby ab
Wenn der Anmeldebildschirm mit Spring-Security abgelaufen ist, läuft das CSRF-Token ab und die Anmeldung schlägt fehl.
Korrespondenz des Teils, in dem die Authentifizierung # getDetails im Komponententest der Federsicherheit durchgeführt wird
In Time.strptime ist% j (Gesamtdatum des Jahres)
Quelle zum Abrufen der Umleitungsquell-URL in Java
Zeigen Sie die Liste in setDetails mit Federsicherheit auf dem Bildschirm an
Was ist die Darstellung von Domänenwissen im [DDD] -Modell?
[Android] Probieren Sie den aus, der den in Spielen üblichen Effekt auf dem berührten Teil des Bildschirms anzeigt