Я разрабатываю простой блог, используя Symfony 2 для него.Symfony - Получение анонимного пользователя вместо аутентифицированного пользователя
Я застрял в вопросах безопасности. Я хочу отображать «редактировать» ссылки, если пользователь зарегистрировался на сайте, но я получаю анонимный пользователь.
Вот мой код security.yml и код шаблона. Благодаря!
security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
admin: { password: admin, roles: ['ROLE_ADMIN'] }
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# secures part of the application
blog_secured_area:
pattern: ^/edit
anonymous: ~
http_basic:
realm: "Secured Blog Area"
# the blog page has to be accessible for everybody
blog_public:
pattern: ^/
anonymous: true
access_control:
- { path: ^/edit, roles: ROLE_ADMIN }
article.html.twig (URL:/подробнее/{ID})
{% if is_granted('ROLE_ADMIN') %}
<a href="{{path('yago_web_blog_edit', {'id': article.id})}}">Editar</a>
{% endif %}
Вы уверены, что имеете авторизуемого пользователя? вы можете проверить его в панели профилировщика –
Я думаю, это связано с тем, что вы определили два контекста безопасности: 'blog_secured_area' и' blog_public'. Вы можете войти в зону безопасности, но не в общественном месте. Позвоните мне, если я ошибаюсь, но ваш 'is_granted ('ROLE_ADMIN')' тест выполняется в публичной зоне? –
Когда я получаю доступ к/edit/* для времени fisrt, выдается основной файл auth. Затем, если я вхожу в систему успешно, мне не нужно делать это снова. Я предполагаю, что какой-то сеанс был создан (я новичок в symfony), но это не так. Очевидно, что я что-то пропустил. Спасибо за ваш ответ. – YagoQuinoy