Sulu CMF权限配置异常:匿名用户可访问受限URL
问题:Sulu CMF密码保护页面无法拦截匿名访问
我正尝试用Sulu CMF创建网页的密码保护区域,按官方指南配置后功能未正常生效。后台激活子页面权限后,页面已不在导航中显示(符合预期),但匿名用户仍可通过对应URL直接访问该页面,并未被重定向到登录页。怀疑Symfony防火墙未生效,以下是security.yaml中的配置:
# ... website: pattern: ^/ lazy: true provider: sulu form_login: login_path: login check_path: login logout: path: logout target: / remember_me: secret: "%kernel.secret%" lifetime: 604800 # 1 week in seconds path: / # ...
日志内容如下:
[2024-01-11T11:15:00.095350+00:00] security.DEBUG: Checking for authenticator support. {"firewall_name":"website","authenticators":2} [] [2024-01-11T11:15:00.095425+00:00] security.DEBUG: Checking support on authenticator. {"firewall_name":"website","authenticator":"Symfony\Component\Security\Http\Authenticator\FormLoginAuthenticator"} [] [2024-01-11T11:15:00.095448+00:00] security.DEBUG: Authenticator does not support the request. {"firewall_name":"website","authenticator":"Symfony\Component\Security\Http\Authenticator\FormLoginAuthenticator"} [] [2024-01-11T11:15:00.095461+00:00] security.DEBUG: Checking support on authenticator. {"firewall_name":"website","authenticator":"Symfony\Component\Security\Http\Authenticator\RememberMeAuthenticator"} [] [2024-01-11T11:15:00.095480+00:00] security.DEBUG: Authenticator does not support the request. {"firewall_name":"website","authenticator":"Symfony\Component\Security\Http\Authenticator\RememberMeAuthenticator"} []
请问我遗漏了什么配置?
解决方案
核心问题是缺少access_control规则,当前的防火墙配置仅定义了认证方式,但未告知Symfony哪些路径需要强制用户认证。
- 添加
access_control规则
在security.yaml中补充access_control部分,指定受保护页面的路径需要对应权限:
# ... access_control: # 替换为你实际的受保护页面路径,比如/protected/*或具体页面路径 - { path: ^/protected, roles: ROLE_USER } # 如果使用Sulu自定义角色,比如后台配置的编辑权限,可替换为ROLE_SULU_EDITOR等 # ...
- 匹配Sulu页面权限与Symfony角色
确保后台设置的页面权限对应的角色,和access_control中指定的角色一致。比如如果后台给页面分配的是"编辑"权限,对应的Symfony角色通常是ROLE_SULU_EDITOR,则规则应改为:
- { path: ^/protected, roles: ROLE_SULU_EDITOR }
- 清理缓存
修改配置后,执行Symfony缓存清理命令:
php bin/console cache:clear
从日志可以看出,当前请求未触发认证流程,因为防火墙没有收到"需要验证权限"的指令,添加access_control后,匿名访问受保护路径时会被自动重定向到登录页。
内容的提问来源于stack exchange,提问作者Mario A
相关产品推荐
相关产品推荐

