2017-08-07 63 views
0

我想創建一個login form,並且需要https用於我網站的所有頁面。如果我需要HTTPS(Symfony3),登錄表單不起作用

security.yml看起來是這樣的:

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

    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/logout, roles: ROLE_USER } 

它的工作原理,但如果我從第一行的beginnig刪除#標誌,認證停止工作。安全系統不攔截請求。我在access_control中有很多行,因此爲每個頁面定義它是不切實際的。

我的主要目標是:對所有頁面都要求https。除了loginindex

回答

2

以外,每個頁面只能用於登錄用戶,但Symfony讀取您的訪問控制時,它將採用與所調用路由相匹配的第一個路徑。因此,如果您先定義(如您所做的)路徑^/(與每條路線匹配),則SF將不會讀取您的loginlogout訪問控制。 See this part of cookbook

如果你想讓你的網站全HTTPS,我建議編輯您的nginx,apache配置重定向誰類型的用戶httphttps

# example with nginx 
server { 
    listen 80; 
    server_name yourwebsite.com; 
    return  301 https://yourwebsite.com$request_uri; 
}