2014-10-23 5 views
2

모든 요청을 example.com/checkout/에서 HTTPS로 강제 설정하려고합니다. 나는 Symfony docs를 읽고 내 security.yml 파일이 있습니다 : 나는 http://example.com/checkout/에 갈 때Symfony로 HTTPS 강제 적용

그러나
access_control: 
    - { path: ^/checkout, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 

가, 내가 HTTPS로 리디렉션 아닙니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

이 사용자를 허용하는 것입니다. https에서 리디렉션하려면 htaccess를 사용하거나 컨트롤러 동작을 확인하십시오. –

+0

이 페이지를 오해하니? 그것은 https를 강요 할 것이라고 말한다. http://symfony.com/doc/current/cookbook/security/force_https.html –

+0

이 맞으면 사용자가 https를 사용하여 경로를 일치 시키도록하고, 그렇지 않으면 404를 찾을 수 없습니다. :) –

답변

0

나는 방화벽 설정을 가지고 있지 않았다. 나는 security.yml의 방화벽 섹션에서이 작업을 추가하는 데 필요한 :

checkout: 
    pattern: ^/checkout 
    anonymous: ~ 

그리고이 일을 그가`https`을 채널을 사용하는 경우

access_control: 
    - { path: ^/checkout, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 
1

YAML :

secure: 
    path:  /secure 
    defaults: { _controller: AcmeDemoBundle:Main:secure } 
    schemes: [https] 

또는 주석 : 자세한 내용은

/** 
* @Route("/secure", schemes = "https") 
*/ 
class SecureController 
{ 
    ... 
} 

는 : http://symfony.com/doc/current/cookbook/routing/scheme.html

+0

보안 영역에 여러 컨트롤러가 있으므로 각 개별 경로 대신 security.yml에 규칙을 설정하고 싶습니다. symfony가 전체 영역을 보호하기를 원한다면 symfony가 권장하는 방법입니다 : http://symfony.com/doc/current/cookbook/security/force_https.html –

-1

이것은 그가 HTTPS 채널을 사용하는 경우 사용자를 허용하는 것입니다. https에서 리디렉션하려면 htaccess를 사용하거나 컨트롤러 동작을 확인하십시오.

symfony configs는 사용자가 라우트와 일치시키기 위해 https를 사용하도록합니다. 그렇지 않으면 404를 찾을 수 없습니다. :)

+0

죄송합니다 - 사실이 아닙니다. 내'security.yml'에서 그것을 테스트하고 404 대신에 강제 HTTPS로 가라. Symfony 프로젝트에서'.htaccess'도 만지지 말아야한다. – sjagr