Spring Security 3.2'yi yapılandırdıktan sonra, _csrf.token
bir isteğe veya oturum nesnesine bağlı değildir.
Bu, bahar güvenlik yapılandırmasıdır:
<http pattern="/login.jsp" security="none"/>
<http>
<intercept-url pattern="/**" access="ROLE_USER"/>
<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp?error=1"
default-target-url="/index.jsp"/>
<logout/>
<csrf />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="test" password="test" authorities="ROLE_USER/>
</user-service>
</authentication-provider>
</authentication-manager>
Login.jsp dosyası
<form name="f" action="${contextPath}/j_spring_security_check" method="post" >
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<button id="ingresarButton"
name="submit"
type="submit"
class="right"
style="margin-right: 10px;">Ingresar</button>
<span>
<label for="usuario">Usuario :</label>
<input type="text" name="j_username" id="u" class="" value=''/>
</span>
<span>
<label for="clave">Contraseña :</label>
<input type="password"
name="j_password"
id="p"
class=""
onfocus="vc_psfocus = 1;"
value="">
</span>
</form>
Ve sonraki html'yi oluşturur:
<input type="hidden" name="" value="" />
Sonuç, 403 HTTP durumudur:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
GÜNCELLEME Bir miktar hata ayıklamadan sonra, istek nesnesi DelegatingFilterProxy formundan çıkar, ancak CoyoteAdapter 469 satırında request.recycle (); tüm öznitelikleri silen ...
Tomcat 6.0.36, 7.0.50'de JDK 1.7 ile test ediyorum.
Bu davranışı anlamadım, bunun yerine, birisi beni CSRF ile çalışan Spring Security 3.2 ile bazı uygulama örneği savaşına yönlendirirse mümkün olabilirdi.
spring-security.xml
) Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (Struts 2.3.16 ile entegre olmasına rağmen) ile. yalnızca Spring MVC ile deneyin). Ancak istek, 403 durumundaki dosyaların yüklenmesi için çok parçalı olduğunda başarısız olur . Bunun için bir çözüm bulmakta zorlanıyorum.