Si vous vous connectez sous l'environnement Spring-Security, il échouera uniquement la première fois et vous serez authentifié normalement à partir de la deuxième fois.
La méthode de construction de l'URL de redirection vers l'écran d'auto-connexion était incorrecte.
Les contrôleurs suivants étaient prêts à afficher leur propre écran de connexion.
@Controller
@RequestMapping("/login")
public class LoginController {
@GetMapping
public String index(Optional<String> error) {
...
}
}
Ensuite, j'ai préparé le contrôleur suivant pour rediriger vers
/ login``` quand je suis arrivé à
/
.
@Controller
public class TopController {
@GetMapping("/")
public String index() {
return "redirect:" + MvcUriComponentsBuilder.fromMethodName(LoginController.class, "index", "").build().toUri().toString();
}
}
Cependant, cette méthode de spécification est incorrecte et l'URL de redirection devient `` http: // localhost: 8080 / login? Erreur incorrecte ''. En termes simples, cette URL sert à afficher les erreurs de connexion.
Tout d'abord, lorsque vous redirigez vers cette URL, l'écran de connexion s'affiche. À propos, spring-security a une fonction appelée SavedRequest '' que s'il y a une URL qui a été accédée avant la connexion, elle sera sautée à cette URL après la connexion. La dernière URL dans ce cas est
connexion? Erreur incorrecte '' pour l'erreur de connexion. Pour cette raison, si la connexion réussit, l'opération sera ignorée à l'URL de l'erreur de connexion.
Modification de l'utilisation de MvcUriComponentsBuilder.
return "redirect:" + MvcUriComponentsBuilder.fromController(LoginController.class).build().toUri().toString();
Je n'ai pas vraiment compris la relation entre `` MvcUriComponentsBuilder '' et Optional
Recommended Posts