在 Symfony 4.2 中动态修改 access_control

问题描述 投票:0回答:0

我正在使用 Symfony 4.2.12 和 hslavich/OneloginSamlBundle 进行 SAML SSO 实现,用户可以启用或禁用它。启用后,我需要修改 security.yaml access_control 以限制对 ROLE_LOGIN 的访问,例如:

- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }

- { path: ^/, roles: ROLE_LOGIN }

并且还在 access_control 部分添加新条目以进行 saml 回调。我怎么能做到这一点?我试过以下,但没有成功:

- { path: ^/, roles: ROLE_LOGIN, allow_if: "'%env(sso)%' == 'true'" }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }

据我了解,在这种情况下,如果环境变量 sso 为真,则会匹配第一条规则,限制对角色 ROLE_LOGIN 的访问。如果用户已停用 sso,则第一条规则将不匹配,用户可以匿名访问该站点。但我得到的结果是,在这两种情况下,只有第一条规则被匹配。

我在这里做错了什么?或者我可以使用不同的方法(修改并添加 access_control 中的新条目)来解决这个问题吗?

感谢您的帮助。

php symfony single-sign-on saml access-control
© www.soinside.com 2019 - 2024. All rights reserved.