Ign*_*kis 5 php access-control symfony symfony-security
假设我的access_control块下面是security.yml:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每个人都有权进入homepage和reset-password页面.但我想仅允许匿名身份验证的用户使用这些页面.完全通过身份验证的用户应该获得403 access denied error或404 page not found.
据资料与allow_if我应该ablo创建角色表达式定义访问.但如果我这样做:
access_control:
- { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" }
Run Code Online (Sandbox Code Playgroud)
现在下面的想法完全验证的用户(登录)不应该被允许访问的页面和匿名认证应该能够访问,但可惜的是,没有任何用户都能够访问它...
我缺少什么想法?
UPDATE
通过正确的答案,正如以下建议的那样:
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }
Run Code Online (Sandbox Code Playgroud)
你确定可以测试IS_*使用has_role()吗?这些角色扮演角色,但他们不是角色.也许这就是它总是回归的原因false:
好像你应该更好地使用is_anonymous()和is_authenticated()自定义函数allow_if表达式.
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |