我想创建一个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。每个页面应仅供登录用户使用,login
,index
和一些
答案 0 :(得分:2)
当Symfony读取您的访问控制时,它将采用与所调用路由匹配的第一条路径。因此,如果您首先定义(如您所做)路径^/
(匹配每条路线),则SF将不会读取您的login
或logout
访问控制。 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;
}