2014-12-22 2 views
0

symfony2를 FOSUserBundle과 함께 사용하고 있으며 방화벽을 올바르게 설정하려고합니다.symfony2 방화벽 구성 - 로그인시 이상한 동작

익명 사용자가 내 웹 사이트의 주요 부분을 사용할 수 없도록하고 싶습니다. 홈 페이지 (공개 패턴의 $) 및 일부 다른 패턴은 패턴에 따라 사용 가능해야합니다.

내 현재 구성에서는 로그인 후 홈 페이지로 리디렉션되지만 여전히 익명으로 처리됩니다. 나중에 직접 익명으로 허용되지 않는 페이지의 URL을 직접 입력하면 액세스 할 수 있으며 프로필러에 기록됩니다.

내 구성 : 나는 그것이 제대로 작동하기 위해 할 수있는 일

dev: 
    pattern: ^/(_(profiler|wdt)|css|images|js)/ 
    security: false 
public: 
    pattern:  /(login$|register|resetting|public|$) 
    anonymous:  true 
main: 
    pattern:  ^/ 
    anonymous:  false 
    provider:  main 
    form_login: 
     login_path: fos_user_security_login 
     check_path: fos_user_security_check 
    logout: 
     path:  fos_user_security_logout 
     target: /

가 (로그인 후 제대로 기록).

편집 : 나는 무슨 일이 벌어지고 있는지 더 잘 이해한다 : 로그인 후 홈 페이지 = 루트 주소로 리디렉션되고있다. 이것은 처음에는 공용 방화벽으로 떨어지고, 나는 그것이 연결되어있는 것처럼 보이지 않습니다.

답변

0

완료! 이 Authenticate multiple symfony2 firewalls with one login form

내 구성이 지금된다 :

방화벽 :

dev: 
    pattern: ^/(_(profiler|wdt)|css|images|js)/ 
    security: false 
guest: 
    pattern:  /(user/login$|user/register|user/resetting|$) 
    anonymous:  true 
    context:  main_auth 
main: 
    pattern:  ^/(?!user/login$) 
    anonymous:  false 
    provider:  main 
    context:  main_auth 
    form_login: 
     login_path: fos_user_security_login 
     check_path: fos_user_security_check 
    logout: 
     path:  fos_user_security_logout 
     target: /
    remember_me: 
     key:  "%secret%" 
     lifetime: 86400 # 365 jours en secondes 
     path: /
     domain: ~ # Prend la valeur par défaut du domaine courant depuis $_SERVER 
    oauth: 
     remember_me: true 
     resource_owners: 
      facebook:   "/loginhwi/check-facebook" 
      github:    "/loginhwi/check-github" 
      google:    "/loginhwi/check-google" 
      twitter:   "/loginhwi/check-twitter" 
      linkedin:   "/loginhwi/check-linkedin" 
      flickr:    "/loginhwi/check-flickr" 
     login_path:  fos_user_security_login 
     check_path:  fos_user_security_check 
     failure_path:  fos_user_security_login 
     success_handler: foodmeup_user.handler_auth 
     oauth_user_provider: 
      service: fosubuser.provider 
0

그럼 당신은 항상 당신이 리디렉션있는 경로를 하드 코딩 할 수 있습니다 해결 방법은 더 나은 여기에 설명되어있는 방화벽의 컨텍스트 속성을 포함 로그인 후 (security.yml 파일에 있음). 더 읽을 수 있습니다 here

security: 
    firewalls: 
     main: 
      form_login: 
       default_target_path: default_security_target 
관련 문제