9
votes

Problème avec la déconnexion de Spring Security

J'ai un problème de déconnecter dans le cadre de printemps.

Tout d'abord, quand je veux j_spring_security_logout pour le gérer pour moi, je reçois 404 j_spring_security_logout non trouvé: échantillon-sécurité.xml: xxx

lien d'url échantillon vers la déconnexion dans la page JSP: xxx

Quand j'essaie d'utiliser Une page JSP personnalisée, c'est-à-dire que j'utilise le formulaire de connexion à cet effet puis je vais obtenir un meilleur résultat au moins qu'il permet de connecter la page, mais un autre problème est que vous ne vous êtes pas déconnecté car vous ne pouvez pas répertorier l'URL de type qui devrait être gardé vous achetez. passé en tout cas p>


2 commentaires

salut, j'ai fait comme javascript et j'ai passé un jeton CSRF aussi, mais je ne suis pas capable de vous connecter une fois de plus déconnecté. Après la déconnexion, ma page de connexion s'affiche avec un jeton de CSRF qui est différent, puis lorsque je recharge une page de connexion et non en mesure de Connectez-vous à nouveau, il est écrit http://192.168.6.51:8044/ewts/auth/login_check;jsessionid=40 3A583CDDDC688292408C7 C76CD09F2D? Targurl = non trouvé


Après la déconnexion, comment supprimer le jeton CSRF ???


6 Réponses :


2
votes

est le lien de déconnexion conscient du chemin de contexte?

Par exemple, si votre chemin de contexte est "MyApp", où est le point de liaison mentionné ci-dessus?

"http: // localhost: 8080 / myApp / j_spring_security_logout" ou "http: // localhost: 8080 / j_spring_security_logout"?

En fait, le J_SPRING_SECURY_LOGOUT n'est valide que dans le contexte du WebApp afin que seul le premier lien conduirait à la bonne URL


0 commentaires

12
votes

Je viens d'avoir ce problème.

Vous devez vous assurer dans Web.xml code> Votre filtre de sécurité correspondant à l'URL / J_Spring_Security_Logout P>

EG P >

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/j_spring_security_logout</url-pattern>
</filter-mapping>


0 commentaires

1
votes

Essayez ce lien dans votre page Whow Content un lien de déconnexion: xxx pré>

et créez un fichier logout.jsp dans votre dossier "WebContent" avec le code suivant: p>

<% response.sendRedirect("/security/j_spring_security_logout"); %>


0 commentaires

1
votes

J'ai eu le même problème.

semble être un bug sur 3.0.6!

Je viens de déclasser jusqu'à 3.0.5 et tout fonctionne bien.


0 commentaires

5
votes

J'ai couru dans le même problème et après avoir perdu de l'espoir, j'ai finalement découvert la réponse par accident. Bien sûr, nous apprenons beaucoup en lisant et en utilisant les codes de quelqu'un d'autre et, en faisons cela, nous héritons des paramètres que nous ne savons pas grand chose à propos.

Et c'est ce qui m'est arrivé lors de la programmation à l'aide de la sécurité de printemps. < p> Dans la sécurité du ressort XML, dans la balise http , il y a cette ligne: xxx

J'ai eu cette ligne pendant mes recherches d'un didacticiel ou exemple. Et après 2 jours en difficulté avec le mot-clé J_SPRING_SECURY_LOGOUT et obtenez rien d'erreur 404, j'ai compris ceci.

dans la balise Etiquette Il y a ce paramètre URL sur "/ Déconnexion". Ensuite, j'ai réalisé que, selon mes paramètres, mon printemps s'attend à recevoir / Logout au lieu de / j_spring_security_logout .

une fois que j'ai mis à jour mon code en conséquence, Cela a fonctionné comme un charme.


3 commentaires

Comment le printemps sait-il quel utilisateur se déconnecter? Ne devrait-on pas envoyer le nom d'utilisateur ou quelque chose?


Il n'y a aucun moyen d'être connecté à un système avec deux utilisateurs différents. Lorsque vous vous connectez, Spring conserve votre utilisateur dans la session du navigateur et c'est celui qui est déconnecté.


Travaillé comme un charme. Je faisais la même erreur que je n'avais pas ajouté la déconnexion-url = "/ j_spring_security_logout"



7
votes

Vous devriez faire la demande postale. Quelque chose comme ça: xxx


0 commentaires