![](/img/trans.png)
[英]Symfony2 get to the access_control parameters located in the security.yml
[英]Symfony2 - set security access_control to allow only authenticated anonymously
假設我在security.yml
下有access_control
塊:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
在這種情況下,每個人都可以進入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')" }
現在遵循這個想法,不應該允許完全認證的用戶(登錄)訪問該頁面並且匿名認證應該能夠訪問,但是,不幸的是,沒有一個用戶能夠訪問它...
我缺少什么想法?
UPDATE
通過正確的答案,正如以下建議的那樣:
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }
您確定可以使用has_role()
測試IS_*
嗎? 這些角色扮演角色,但他們不是角色。 也許這就是它總是返回false
的原因:
看來你最好在allow_if
表達式中使用is_anonymous()
和is_authenticated()
自定義函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.