2017-04-11 3 views
0

사용자 관리를 위해 FOSUserbundle을 사용하고 OAuth 인증을 위해 HWIOAuthBundle을 사용하는 응용 프로그램이 있습니다. 현재는 Facebook 만 있습니다.security.yml은 이미 제공받은 check_path를 요청합니다.

FOSUserBundle 템플릿에서 제공하는 로그인 양식을 통해 로그인 할 때이 오류가 계속 발생합니다.

보안 방화벽 구성에서 form_login을 사용하여 방화벽이 처리 할 검사 경로를 구성해야합니다.

페이스 북 버튼을 사용하여 로그인하면 로그인 할 수 없습니다.

다음은

security: 

    encoders: 
     FOS\UserBundle\Model\UserInterface: bcrypt 

    # Roles being defined 
    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 
    providers: 
     in_memory: 
      memory: ~ 

     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     # disables authentication for assets and the profiler, adapt it according to your needs 

     secured_area: 
      anonymous: ~ 
      logout: ~ 
      oauth: 
       resource_owners: 
        facebook: "/login/check-facebook" 
       login_path:  /login 
       use_forward:  false 
       failure_path:  /login 
       oauth_user_provider: 
        service: my.custom.user_provider 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 
     main: 
      pattern: .* 
      provider: fos_userbundle 
      form_login: 
       login_path: fos_user_security_login 
       check_path: fos_user_security_check 
       use_forward: false 
       failure_path: null 
      logout: 
       path: fos_user_security_logout 
       target:/
      anonymous: true 
      http_basic: 
       realm: "Reviews" 
     # main: 

      # activate different ways to authenticate 

      # http_basic: ~ 
      # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate 

      # form_login: ~ 
      # http://symfony.com/doc/current/cookbook/security/form_login_setup.html 

    # Access controls 
    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/view, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/, role: ROLE_ADMIN } 
     - { path: ^/create, role: ROLE_USER} 
     - { path: ^/edit, role: ROLE_USER} 
     - { path: ^/delete, role: ROLE_USER} 

답변

0

내 생각 엔이 양식 로그인이 secured_area 방화벽에 의해 체포되어 내 security.yml 파일입니다.

당신은 3 방화벽이 있습니다

기본 패턴이 /*
  • secured_area 이미 모든 (때문에 패턴의)
  • main 일치 일치하지만, 아마 도달하지 못했다이다 dev 때문에 그대로 모든 것을 일치
    • secured_area 절대로 도달하지 않았습니다.

    Symfony는 fi 처음에는 일치하는 방화벽이고 secured_area은 로그인 양식으로 구성되지 않았기 때문에 작동하지 않습니다. 당신은 기본적으로 mainoauth 부분을 복사 (모두 방화벽을 병합 할 수 있지만 별도의 로그인 메커니즘은 여전히 ​​방해 할 수 있습니다. 모두 로그인은 관리자가 액세스 할 수있는 백엔드에 대한 다른 섹션 (사용자 예를 들어 페이스 북 및 양식 로그인에 경우

    사용자가) 올바른 방화벽이 사용 되었다면 다른 패턴을 할당하고 프로파일 러 (개발 모드에서 화면 하단의 툴바)를 확인할 수 있습니다.

    어떤 경우이든 방화벽의 순서를 변경합니다. dev 그것을 상단으로 이동하고 가장 일반적인 방화벽 (/* 패턴 사용)을 맨 아래로 이동시켜 이전 경로가 아닌 모든 경로를 포착하도록합니다 다른 방화벽에서 처리했습니다.

  • +0

    좋은 한 사람, 나는 주 방화벽으로 oauth를 이동하고 secured_area 매개 변수를 제거했습니다. – Tunds