Logout funktioniert nicht in Spring Security
Schreibe ich eine Sicherheits-Anwendung mit Spring Security 4.0. Als Teil der, dass ich möchte, um eine Abmeldung nennen. Es ist einfach die Request-Methode 'POST' nicht unterstützt. Hier ist mein code:
spring-security.xml
<security:http auto-config="true">
<security:access-denied-handler error-page="/denied"/>
<security:form-login login-page="/login"
username-parameter="j_username"
password-parameter="j_password"
login-processing-url="/j_spring_security_check"
authentication-failure-url="/login?failed=true"
default-target-url="/home" always-use-default-target="true"/>
<security:custom-filter ref="secfilter" before="FILTER_SECURITY_INTERCEPTOR" />
<security:logout invalidate-session="true" logout-url="/j_spring_security_logout" logout-success-url="/login"/>
<!-- <security:logout logout-url="/j_spring_security_logout" logout-success-url="/login"/> -->
<security:csrf />
</security:http>
jsp
<a href="j_spring_security_logout"> <button class="logoutbtn">logout</button></a>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
InformationsquelleAutor Ravi Kumar Ravanam | 2016-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie CSRF-Angriffe, müssen Sie die Verwendung von HTTP
POST
(mit einem<form>
in Ihre JSP) anstelle von HTTPGET
(mit einem<a>
in Ihre JSP), siehe Spring Security Referenz:Siehe beispielsweise Spring Security Referenz:
InformationsquelleAutor dur
Können Sie auch versuchen, diese in Ihre JSP-weil ich denke, dass Sie Ihre JSP-Datei ist falsch. Ersetzen Sie Ihre angegebenen code durch den folgenden code:
In Ihrem Fall sind Sie nicht Sie ein Formular Einreichen, Sie machen einfach einen get-request an
j_spring_security_logout
aber es erfordert ein CSRF-token mit einer POST-Anforderung, so wird es wieder die Fehlermeldung, die Sie bekommen.Bearbeiten: rückgängig machen die änderungen, die Sie gemacht haben, aus der vorherigen Antwort, denn dies ist nur eine änderung zu dem, was Sie bereits haben.
InformationsquelleAutor px06
Ich lösen dieses problem in meinem Projekt. Den code wie folgt:
Ich weiß nicht, ob Sie akzeptieren kann, auf diese Weise.
Wenn Sie öffnen CSRF,Sie müssen, verwenden Sie den post auf Anfrage der logout url. Im Frühjahr security4, der CSRF-Standardeinstellung öffnen. Diese Dokumente geben Ihnen weitere Informationen. 18.5.3 Abmelden 18.5.3 Abmelden
InformationsquelleAutor JonahCui