【发布时间】:2018-01-24 14:57:57
【问题描述】:
我正在开发一个 Symfony 3.4 应用程序,我正在尝试正确配置我的 security.yml 以阻止所有未登录用户访问的网站:
/login
/register
/resseting
还有一个特殊的共享页面(我将提供更多信息)。
这是我的 security.yml access_control:
access_control:
- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
我在我的routing.yml 中的“应用内”路由中使用了_locale:
app:
resource: "@AppBundle/Resources/config/routing.yml"
prefix: /{_locale}/
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
这是命令bin/console debug:router 的(部分)结果:
我需要为IS_AUTHENTICATED_ANONYMOUSLY 允许的路线是customer_view(路径:/{_locale}/q/{token})
我已经尝试了许多不同的路径:
- { path: ^/q/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/%locale%/q/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/q/[a-z]+, role: IS_AUTHENTICATED_ANONYMOUSLY }
- etc .........
我在网络上找不到好的信息,在 symfony 文档上也没有... 有什么帮助吗?
-编辑-
另外,我担心我可能会使用 ^/q/ 为 evryone 打开路线,因为“q”可以解释为语言环境?如何在不影响应用程序安全性的情况下做到这一点?
【问题讨论】:
-
只有一个问题,为什么语言环境是 URI 的第一部分?因此很难限制
access_control。 -
为什么需要使用正则表达式? customer_view url 的浏览器路径是什么?
标签: regex symfony security configuration yaml