2009-02-17 30 views
26

Zajmuję się tworzeniem aplikacji z interfejsem Flex i interfejsem Spring/Hibernate.Jak uzyskać HttpServletRequest w mojej fasoli wiosny?

Aby integracja z Facebookiem działała tak, jak mam to obecnie, muszę przeczytać pliki cookie ustawione w javascript na przednim końcu na zapleczu i wykonać pewne sprawdzanie podczas logowania, aby sprawdzić, czy użytkownik próbuje sfałszować jego login na Facebooku.

Byłoby to dość łatwe, ale nie mogę dowiedzieć się, jak uzyskać HttpServletRequest. Używam dość prostej, wiosennej konfiguracji (to moja pierwsza prawdziwa wiosenna aplikacja i jestem już do niej dobrze zaznajomiony, ale jest w niej mnóstwo rzeczy, na które nigdy nie patrzyłem).

Nie używam Spring MVC lub Spring WebFlow lub coś w tym stylu. Mogę pobrać ServletContext, ale nie mam jeszcze pojęcia, jak uzyskać żądanie.

Każda pomoc?

Odpowiedz

69

Jeśli FlexContext nie jest dostępne

Roztwór 1: W metodzie (> = Wiosna 2,0 wymagane)

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder 

     .getRequestAttributes()).getRequest(); 

Roztwór 2: w fasoli (! Prawdopodobnie sprężyną 3.0 do ziaren Singelton wymagane)

@Autowired 

private HttpServletRequest request; 
+0

Można również użyć adnotacji @Resource zamiast Autowired. Nie musisz wtedy wymagać jawnego wypowiadania, a Ty jesteś trochę mniej wiążący dla Spring. – pstobiecki

+2

Autowired ma 'boolean required() default true;' – Sonny

11

Jest to rodzaj specyfiki Flex/BlazeDS, ale oto rozwiązanie, które wymyśliłem. Przepraszam, jeśli odpowiedź na moje własne pytanie jest faux pas.

HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest(); 

    Cookie[] cookies = request.getCookies(); 

    for (Cookie c:cookies) 
    { 
     log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain())); 
    } 

Działa, dostaję ciasteczka. Mój problem spoglądał na Spring - BlazeDS go miał. Wiosna prawdopodobnie też, ale wciąż nie wiem jak się do tego zabrać.

Powiązane problemy