我正在使用 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 中的新条目)来解决这个问题吗?
感谢您的帮助。