2012-05-27 4 views
0

Je travaille sur l'application Spring-MVC et je dois prendre en charge un cas d'utilisation dans lequel je dois rediriger l'utilisateur vers le même endroit d'où il vient après une connexion réussie à mon application.Quelle est la fiabilité de l'utilisateur request.getHeader ("Referer");

je suis tombé en utilisant en-tête HTTP Referer comme

final String refer = request.getHeader("Referer"); 

mais après avoir fait quelques R & D je suis tombé sur différents fils en disant que Referer n'est pas fiable et et et pare-feu et d'un navigateur bien peut bloquer ce qui peut rendre mon application ne fonctionne pas correctement.

Existe-t-il un autre moyen d'y parvenir? Ou au printemps, comment puis-je obtenir des informations sur l'emplacement (URL) d'où l'utilisateur est venu afin que je puisse l'enregistrer quelque part et peut le récupérer une fois que l'utilisateur s'est connecté avec succès. J'ai vu des fonctionnalités similaires dans la sécurité de printemps.

+0

Quelle version de Spring Security utilisez-vous? –

+0

Que se passe-t-il si vous supprimez simplement l'attribut XML 'default-target-url'? –

+0

@PauKiatWee: je n'utilise pas la sécurité de printemps, mais je sais même est impliquée dans la sécurité de printemps –

Répondre

0

Eh bien, il est assez simple en fait:

  • Un utilisateur non-authentifié tente d'accéder à une ressource protégée dans votre application
  • Un filtre de sécurité intercepte la demande
  • Le filtre stocke l'URL de la accès à la ressource protégée dans un attribut de session
  • Le filtre transfère vers l'écran de connexion
  • Une fois la connexion réussie, l'URL est extraite de la session et l'utilisateur est rouge Iced à cette URL

Je ferais seulement ceci est la ressource protégée est accédée en utilisant une demande GET. Une autre variante consiste à stocker l'URL de la ressource protégée dans un champ caché du formulaire de connexion.

+0

Qu'en est-il le cas où l'utilisateur clique directement sur le bouton de connexion, dis je suis sur une page de détail de produit, l'utilisateur clique sur la section d'en-tête pour le lien de connexion. Comment je le redirige vers la page de détail de produit car je ne vois pas un intercepteur en action ici –

+1

Eh bien, assurez-vous de générer un lien/bouton à la page de connexion qui contient l'URL de la page en cours: 'Login'. Mais je ne me soucierais pas beaucoup de cette situation: si un utilisateur va à la page de connexion sans le forcer, cela veut probablement dire qu'il veut quitter la page en cours, donc le rediriger vers une autre page après la connexion a probablement plus de sens (une page comme "Voici ce que vous pouvez faire sans w vous êtes authentifié ", ou simplement la page d'accueil) –

+0

Je comprends votre point mais c'est ce que l'exigence du client et je ne peux pas faire grand chose car ils sont corrigés :( –

Questions connexes