7
votes

Le printemps ne redirige pas à l'URL cible par défaut?

J'utilise la sécurité du ressort pour l'authentification. L'authentification fonctionne bien. Mais après l'authentification, il n'est pas redirigé vers le HTML qui a été mentionné à l'aide de l'URL cible par défaut dans le fichier de configuration de Security Spring. Je reçois un message simple succès fort>. Mais pas la page HTML qui a configuré. J'ai ajouté ci-dessous la ligne pour la redirection.

<form-login login-page="/login.jsp" default-target-url="/welcome.html"/>


0 commentaires

5 Réponses :


17
votes

Si un utilisateur est envoyé à la page de connexion après avoir demandé une ressource protégée, elle sera envoyée à la page demandée à l'origine après la connexion réussie. Défaut -Target-URL ne sera utilisé que si l'utilisateur connecté sans demander une ressource protégée (c'est-à-dire qu'ils ont navigué directement sur la page de connexion). Si vous voulez toujours aller à l'URL de cible par défaut, vous pouvez spécifier Toujours-utilisation-par défaut-cible =" vrai "comme indiqué dans l'exemple ci-dessous

<form-login login-page="/login.jsp" 
            default-target-url="/welcome.html" 
            always-use-default-target="true"/>


2 commentaires

C'est le problème. Même si je n'ai que l'URL de la cible par défaut, après une connexion réussie, cela m'a demandé à Etrange /Favicon.ico.


C'est ce que je cherchais;)



3
votes

Un gotcha intéressant ici est si le navigateur demande une ressource nécessitant une session authentifiée - par exemple. Demandant un fichier JavaScript qui oblige l'utilisateur à être connecté, cela générerait une erreur 403 que si vous avez des pages d'erreur configurées dans Spring ou web.xml redirigerait l'utilisateur - mais l'utilisateur ne verrait jamais cela.

Puis, lorsque l'utilisateur se connecte, le dernier ressort pense que l'utilisateur demandé était une page d'erreur et que l'utilisateur est donc dirigé vers la page d'erreur et non la page par défaut dans votre configuration dans le ressort


0 commentaires

0
votes

Je sais que c'est une question plutôt ancienne, mais certains utilisateurs peuvent aussi avoir ce problème maintenant.

  1. Assurez-vous que vous pouvez accéder à la page welcome.html (relatif au chemin de contexte). Vous pouvez supprimer intercept-url ou y accéder directement après la connexion.
  2. Assurez-vous de spécifier également le Toujours-Use-Use-Use-Cible = "vrai"
  3. Si vous avez spécifié la gestion de la session, assurez-vous d'abord que vous n'êtes pas redirigé d'abord au invalide-session-url .

0 commentaires

0
votes

Comme vous pouvez le voir dans l'image, il existe une sorte de mauvais design (OMI doit toujours rediriger vers l'URL par défaut-cible-URL ). Lorsque vous allez à l'URL de connexion à partir d'une ressource interdite, elle vous redirigera sur cette URL et ne pas aller à travers le par défaut-cible-url . Il suffit d'utiliser toujours-utiliser-user-par défaut-cible = "vrai" et vous aurez le comportement du désir

http://i.stack.imgur.com/fj9ou.png < / p>


0 commentaires

9
votes

J'ai eu un problème similaire et une réponse ci-dessus m'a donné un indice, mais depuis que j'utilise des configurations directement à partir de la classe Java après m'a aidé:

in Docs.spring.io Vous pouvez trouver:

par défaut de la valeur par défaut (chaîne de valeur par défaut), Booléan toujours)

Par conséquent, lorsqu'il est modifié xxx

à xxx

problème a été résolu.


1 commentaires

merci cela m'a aidé. En regardant le Javadoc: / ** * Spécifie où les utilisateurs seront redirigés après l'authentification avec succès si * ils n'ont pas visité une page sécurisée avant d'authentifier ou {@code TOUJOURSUtilisez} * est vrai. * / Ce que je comprends d'en haut, c'est que si On n'a pas visité une page sécurisée d'abord, la redirection ne se produira que si le drapeau est défini sur True.