2013-08-08 8 views
1

Symfony 2.3을 사용하고 프로덕션 서버에 문제가 있습니다.액화 환경에서 Ajax 요청은 액세스가 거부되었습니다 (완전히 인증되지 않은 사용자)

프로덕션 환경에서 모든 AJAX 요청이 실패하는 경우 (항상 어떤 기회인지 이해하지 못함) 발생합니다. prod.log에서 내가 가진 :

security.INFO: Populated SecurityContext with an anonymous Token [] [] 
[2013-08-08 16:03:28] security.INFO: No expression found; abstaining from voting. [] [] 
[2013-08-08 16:03:28] security.DEBUG: Access is denied (user is not fully authenticated)  by "/var/www/clients/client1/web1/web/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php" at line 73; redirecting to authentication entry point 

내가 자극 환경 안에 있고 내가 (아약스 오류 후) 페이지를 새로 고침하면 아무 일도 발생하지 않습니다. 아직 로그인되어 있습니다.하지만 아약스는 같은 오류로 실패합니다. app_dev.php로 전환하면 오류가 사라지고 AJAX가 작동합니다. 내가 로그인 리디렉션 302 헤더를 보내 불을 지르고으로 로그인

jms_security_extra: 
secure_all_services: false 
expressions: true 

security: 
    encoders: 
     Gdr\UserBundle\Entity\User: sha512 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

providers: 
    database: 
     entity: { class: GdrUserBundle:User, property: email } 

firewalls: 
    secured_area: 
     pattern: ^/ 
     form_login: 
      check_path: /login_check 
      login_path: /login 
      success_handler: authentication_handler 
     logout: 
      path: /logout 
      target:/
      success_handler: authentication_handler 
      invalidate_session: true 
     anonymous: ~ 

access_control: 
    - { path: /game/*, roles: ROLE_USER } 
    - { path: /login/choose-character, roles: ROLE_USER } 
    - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY} 
    - { path: /logout, roles: ROLE_USER } 
    - { path: /admin/*, roles: ROLE_ADMIN } 

######Config.yml 
framework: 
session: 
    cookie_lifetime: 0 
    save_path: "%kernel.root_dir%/Sessions/" 
    cookie_httponly: false 
    # save_path: ~ 

모든 아약스 요청 :

여기

내 설정 (아약스 노선/* 패턴 게임 아래). URL에 AJAX없이 액세스하려고하면 작동합니다. 302 코드 없음.

아이디어가 있으십니까?

+0

그것은 바보지만, 항상 시작하는 데 유용합니다 : 캐시를 삭제 했습니까? –

+0

예, 선택이 취소되었습니다. – Diego

+0

서버 트래픽을 수신 대기하십시오. 내 생각 엔 session_id 쿠키가 전송되지 않아서 보안 세션을 설정할 수 없다고 생각합니다. 'config.yml'에있는 커스텀'session' 설정을 일시적으로 사용 불가능하게 할 수 있습니까? –

답변

0

문제점을 발견했습니다.

'www'와 같이 절대 URL (www.mydomain.com)을 사용하고 있지만 쿠키 호스트에 'www'가없는 것이 문제였습니다.

이제 상대 URL을 사용하면 좋습니다. 덕분에 나는이 말에, 여기 내 솔루션을 발견 :

모든 : Symfony, jQuery.ajax() call, session variables lost