我遵循'如何從數據庫(實體提供程序)'的Symfony2烹飪書(http://symfony.com) /doc/current/cookbook/security/entity_provider.html),除非我不使用自定義實體提供程序 - 這意味着我的用戶類使用延遲加載角色。Symfony2角色/組 - is_granted沒有檢測到用戶擁有的角色
安全防火牆/訪問控制一切正常。我有一些只有ROLE_ADMIN的用戶可以訪問的路由和一些ROLE_USER用戶可以訪問的路由 - 這些工作正常。
的問題是,在我的基礎模板,我有一個顯示像條:
<p>Logged in as: {{ app.user.username }} {% if is_granted('ROLE_ADMIN') %}| <a href="{{ path('bassettprovidentia_skeleton_admindashboard') }}">Admin area</a> {% endif %}| <a href="#">Settings</a> | <a href="{{ path('bassettprovidentia_skeleton_logout') }}">Log out</a></p>
即使我的用戶在數據庫中的ROLE_ADMIN角色(並且可以訪問被限制到該網址角色),「管理區域」鏈接沒有被顯示!
在相同的形式,我有這樣的:
<p>Roles: {% for role in app.user.roles %}{{ role.name }} [{{ role.role }}]{% if not loop.last %}, {% endif %}{% endfor %}</p>
它工作正常!顯示用戶所有的角色!
我在做什麼錯?
是懶惰加載責任?
這不會導致問題的其他地方。
那麼當你急切地在用戶提供者中加載角色時會發生什麼? – Cerad 2012-04-17 21:56:44