2012-04-27 14 views
7

Wdrażam usługę internetową jako część witryny Symfony2, do której będzie można uzyskać dostęp za pomocą JSONp i iframe z innej (statycznej) witryny. Gdy użytkownik loguje się przy użyciu ramki iFrame, Safari nie przechowuje sesji, więc zapisuję identyfikator sesji w plikach cookie witryny statycznej za pomocą javascript i przekazuję ją z powrotem w parametrach żądania GET lub POST, co działa dobrze .Czy istnieje sposób na zatrzymanie Symfony2 wysyłania plików cookie sesji dla określonych ścieżek?

Problem polega na tym, że w innych przeglądarkach plik cookie sesji dla usługi sieciowej jest zachowywany, co oznacza, że ​​po wylogowaniu użytkownika nadal jest on zalogowany w witrynie Symfony.

Czy istnieje sposób, aby, dla witryny usługi sieciowej tylko witryny symfony, wyłączyć pliki cookie sesji PHP, najlepiej w przyjazny dla Symfony sposób (w przeciwieństwie do, na przykład, messing with .htaccess)?

Nadal chcę sesji, ale utrzymam ją, przekazując zmienną PHPSESSID we wszystkich żądaniach, które wykonuję.

Odpowiedz

11

This może być właśnie tym, czego szukasz. Mają bezpaństwowców zapór:

W swojej security.yml

# app/config/security.yml 
security: 
    firewalls: 
     main: 
      stateless: true 
+0

myślę, że próbowałem i nie działa z formularza logowania opartych lub czegoś. – rjmunro

+0

Ah oparty na formularzu. Nawet w dokumentach jest napisane, że loginy oparte na formularzach będą wykorzystywać sesje i pliki cookie. Robię bezstanową usługę sieciową, więc poszło mi łatwo –

+0

Zobacz: [Książka z Symfony - Zabezpieczenia - Bezpaństwowe uwierzytelnianie] (http://symfony.com/doc/current/book/security.html#stateless- authentication) – flu

Powiązane problemy