簡體   English   中英

Symfony2 - 將security access_control設置為僅允許匿名進行身份驗證

[英]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 }

在這種情況下,每個人都可以進入homepagereset-password頁面。 但我想僅允許匿名身份驗證的用戶使用這些頁面。 完全通過身份驗證的用戶應該收到403 access denied error404 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM