>

여러 하위 도메인이있는 사이트가 있습니다. 하위 도메인 중 하나에 대한 특정 권한이있는 사용자를 이미 '기본'사이트에서 인증 한 경우에만 로그하고 싶습니다. 내 기본 도메인이 www.domain.com이라고 가정하고 sub1.domain.com, sub2.domain.com, sub3.domain.com이 있습니다. domain.com에서 사용자가 인증되면 재 인증을 요구하지 않고 sub2.domain.com으로 리디렉션 할 수 있기를 원합니다. 그러나 sub1.domain.com 또는 sub3.domain.com에 인증되지 않아야합니다. config.xml에서 cookie_domain 설정에 대해 읽었지만이 경우 모든 하위 도메인에 대해 사용자가 기록됩니다. 가능합니까? 감사합니다!

자세한 정보 편집

Symfony 2.7과 함께 일하고 있는데 security.yml에서 두 가지 솔루션을 모두 시도했습니다. 하나의 기본 공유 방화벽과 하나의 하위 도메인 당 하나입니다 (아래 참조). 그러나 모든 하위 도메인에 사용자를 로그인하고 싶지 않으므로 config.yml의 세션 cookie_domain을 '.domain.com'으로 구성하지 않았습니다.

firewalls:
    main:
        pattern: ^/
        host: %main_domain%
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:
            path: /logout
            target: /login
        anonymous:    true
        context: main_context
    sub1:
        pattern: ^/
        host: %sub1_domain%
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        logout:
            path: /logout
            target: /login
        anonymous:    true
        context: main_context
    sub2:
        pattern: ^/
        host: %sub2_domain%
        ....


  • 답변 # 1

    여러 가지 방법으로 가능합니다. 기본 도메인에 로그인하기 때문에 어떤 사용자가 어떤 하위 도메인에 액세스 할 수 있는지 지정하는 방법이 필요합니다. 다른 역할을 사용하면 이에 대한 합리적인 접근 방식으로 보입니다. 예를 들어 subdomain1에 액세스 할 수있는 사용자는 ROLE_USER_SUB1 와 같은 역할도합니다. .

    이 설정으로 security.yaml 를 수정할 수 있습니다  그리고 access_control 를 사용하십시오  추가 일치 옵션을 사용하여 도메인을 기반으로 특정 역할에 대한 액세스를 제한하는 설정

    security:
        access_control:
            ...
            - { path: ^/, roles: ROLE_USER_SUB1, host: sub1\..* }
            - { path: ^/, roles: ROLE_USER_SUB2, host: sub2\..* }
    
    

    필요에 따라이를 조정해야 할 수도 있으며 첫 번째 일치 규칙이 사용되므로 경로의 올바른 순서를 신중하게 사용해야합니다.

    또 다른 가능한 해결책은 kernel.request 에서 각 요청에 대해 트리거되는 간단한 이벤트 리스너를 사용하는 것입니다.  (방화벽 리스너 뒤에 리스너를 배치해야 할 수도 있으므로 우선 순위를주의해서 확인하십시오) 또는 kernel.controller  액세스 결정 관리자 또는 Symfony\Component\Security\Core\Security 를 사용하십시오.  사용자가 (a) 로그인했으며 (b) 올바른 역할이 설정되어 있는지 확인하려면 https://symfony.com/doc/current/security/securing_services.html

    을 참조하십시오.

  • 이전 java - 배열에서 생성자를 사용할 수 없습니다
  • 다음 bash - ssh로 백그라운드 프로세스를 시작하고 실험 스크립트를 실행 한 다음 중지하십시오