大家好我是Symfony的新手,並且有一個簡單的問題。如何匹配網址與Symfony的安全訪問控制
在security.yml
文件我已經設置一些訪問控制路徑:
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: .*settings, roles: ROLE_USER }
- { path: ^/$, roles: ROLE_USER }
- { path: ^/.*, roles: ROLE_ADMIN }
,到目前爲止,工程,我想。
現在我建立一個菜單,並希望根據其訪問隱藏顯示導航項目,所以我如何獲取這些信息?
必須有一些功能,如:
$securityContext->isUrlGranted($this->generateUrl('homepage'));
感謝您的幫助。
編輯
例子:
// current user is ROLE_ADMIN:
$acl->isUrlGranted('foo/bar'); // true
$acl->isUrlGranted('login'); // true
// IS_AUTHENTICATED_ANONYMOUSLY
$acl->isUrlGranted('login'); // true
$acl->isUrlGranted('something/else'); // false
// ROLE_USER
$acl->isUrlGranted('settings/profile'); // true
$acl->isUrlGranted('foo/bar'); // false
等。
我想你可以看看這裏:http://stackoverflow.com/questions/25015763/symfony2-check-isgranted-for-a-route – chapay 2015-02-09 08:55:44
@AndreySobkanyuk謝謝,這幾乎是我所搜索的,但我認爲這個解決方案對於這樣一個簡單的需求來說是一種矯枉過正的工作。Symfony這樣做的方式似乎是基於角色手動配置菜單,至於我認爲這是完全愚蠢的,因爲這樣你可以定義所有的東西兩次......但即時通訊因爲我沒有資源和時間來實施另一個ACL或擴展交互式集成。 – Mario 2015-02-09 10:51:51
我想不幸的是這是唯一的解決方案。如果您願意,我可以將其作爲獨立答案發布。 – chapay 2015-02-09 11:15:38