Недавно начал изучать Symfony и столкнулся с одной проблемой. Есть главная страница, к которой разрешен доступ всем. Есть защищенная страница, к которой доступ имеют только авторизованные пользователи. Авторизация работает нормально, а проблема заключается в том, что при переходе на главную после авторизации $this->getUser() возвращает null. Мне же необходимо знать на этой странице авторизирован пользователь или нет.
Сессии хранятся в БД
Настройки sequrity
providers:
chain_provider:
chain:
providers: [user_db]
user_db:
entity: { class: MonitorBundle\Entity\User, property: login}
encoders:
MonitorBundle\Entity\User:
algorithm: sha512
encode_as_base64: false
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
for_all:
pattern: ^/(login|register|forgot)?$
anonymous: ~
activate_account:
pattern: ^/active/[0-9a-z]+
anonymous: ~
main_page:
pattern: ^/$
anonymous: ~
main:
pattern: ^/
form_login:
login_path: monitor_login
check_path: monitor_login_check
username_parameter: login
password_parameter: password
default_target_path: /dashboard
logout:
path: monitor_logout
target: monitor_homepage
invalidate_session: true
security: true
provider: user_db
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/dashboard, roles: ROLE_USER }
Нутром чую, что система видит, что доступ разрешен анонимному пользователю и дальше не проверяет, был ли пользователь авторизирован. Но вот как это исправить пока понять не могу.
_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.