如果我需要HTTPS(Symfony3),登录表格不起作用

时间:2017-08-07 10:51:26

标签: php symfony symfony-3.2

我想创建一个login form,并为我网站的所有页面都要求https。

我的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和一些

除外

1 个答案:

答案 0 :(得分:2)

当Symfony读取您的访问控制时,它将采用与所调用路由匹配的第一条路径。因此,如果您首先定义(如您所做)路径^/(匹配每条路线),则SF将不会读取您的loginlogout访问控制。 See this part of cookbook

如果您希望自己的网站为https,我建议您修改nginx,apache配置,将http的用户重定向到https

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