Tôi đã làm theo công thức 'Cách tải Người dùng An ninh từ Cơ sở dữ liệu (Nhà cung cấp Thực thể)' từ sách nấu ăn của Symfony2 (http://symfony.com /doc/current/cookbook/security/entity_provider.html), ngoại trừ tôi không sử dụng Nhà cung cấp thực thể tùy chỉnh - điều đó có nghĩa là lớp người dùng của tôi đang sử dụng tải chậm cho các vai trò.Vai trò/nhóm Symfony2 - is_granted không phát hiện vai trò người dùng có
Tường lửa/kiểm soát truy cập trong bảo mật đều hoạt động tốt. Tôi có một số tuyến đường mà chỉ người dùng ROLE_ADMIN mới có thể truy cập và một số người dùng ROLE_USER có thể truy cập - những công việc này tốt.
Vấn đề là trong mẫu cơ sở của tôi, tôi có một thanh sẽ được hiển thị như:
<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>
Mặc dù người dùng của tôi có vai trò ROLE_ADMIN trong cơ sở dữ liệu (và có thể truy cập các URL bị hạn chế đó vai trò), liên kết "Khu vực quản trị" không được hiển thị!
Trong hình thức tương tự, tôi có điều này:
<p>Roles: {% for role in app.user.roles %}{{ role.name }} [{{ role.role }}]{% if not loop.last %}, {% endif %}{% endfor %}</p>
Nó hoạt động tốt! Tất cả các vai trò mà người dùng đã được hiển thị!
Tôi đang làm gì sai?
Việc lười biếng có đáng trách không?
Nó không gây ra sự cố ở nơi khác.
Vậy điều gì sẽ xảy ra khi bạn háo hức tải vai trò trong nhà cung cấp dịch vụ của mình? – Cerad