【问题标题】:Allow for IS_AUTHENTICATED_ANONYMOUSLY for one route using regexp in Symfony security在 Symfony 安全中使用正则表达式允许 IS_AUTHENTICATED_ANONYMOUSLY 用于一条路由
【发布时间】: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


【解决方案1】:

我会尝试以下方法,而不是对整个路径使用正则表达式。

- { path: ^/(%locales_string%)/customer_view, roles: [IS_AUTHENTICATED_ANONYMOUSLY] }

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 2017-05-13
    • 1970-01-01
    • 2018-05-19
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多