2016-03-31 14 views
1

Yay denetleyicisine _csrf nesnesini (?!) Nasıl alabilirim? Spring Security'yi yapılandırdım ve jsp dosyalarında $ {_ csrf} request özniteliği alabiliyorum. denedim:Yay denetleyicide _csrf dosyasını alın

CsrfToken _csrf = (CsrfToken) session.getAttribute("CsrfToken"); 
CsrfToken _csrf = (CsrfToken) session.getAttribute("_csrf"); 

sonuç null;

Şimdiden teşekkürler!

cevap

2

. HttpSessionCsrfTokenRepository sınıfını inceledim. Gelen HttpServletRequest nesnesinden gelen belirteci yükleme yöntemi vardır.

Nihayet bu benim için çalıştı: Birisi bu bana nasıl çalıştığını anlatıyor eğer

CsrfToken token = new HttpSessionCsrfTokenRepository().loadToken(request); 

minnettar kalacağım.

1

Dene: Bir anahtar "org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN" ile bir oturum özelliği gördü Hata ayıklama

CsrfToken token = (CsrfToken) session.getAttribute(CsrfToken.class.getName()); 
+0

Teşekkür ederiz @NikolaB. Ama null verir. Hata ayıklamasında "org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN" anahtarıyla bir oturum özniteliği görüyorum. – 0bj3ct

0

Daha önceki girişimlerinizde, CSRF parametre adını oturum özellik adıyla karıştırıyor ve önceki sürümlerde kullanılmış veya kullanılmamış olabilecek CsrfToken.class.getName()'u deniyordunuz. Yani basitçe doğru fikrin vardı ama yanlış anahtar. İkinci başlık ise,

private String parameterName = DEFAULT_CSRF_PARAMETER_NAME; 
private String headerName = DEFAULT_CSRF_HEADER_NAME; 
private String sessionAttributeName = DEFAULT_CSRF_TOKEN_ATTR_NAME; 

birincisi belirteci bir POST parametresi olarak geldiğinde parametre adıdır: HttpSessionCsrfTokenRepository için kaynak koduna baktığımızda , bunu aşağıdaki varsayılan tanımlar göreceksiniz istek başlığında ne zaman gelir ve üçüncü oturumda saklamak için anahtardır. loadToken yöntemi, aslında istek nesnesinden belirteci almaz - oturum nesnesini istek üzerine alır ve daha sonra, daha önce sessionAttributeName tarafından tanımlanan anahtarla depolanan belirteci arar.