Я унаследовал приложение Symfony 3, которое, похоже, имеет хорошую работающую установку FOSUserBundle. Однако, когда я пытаюсь внедрить @security.context в службу, чтобы получить вошедшего в систему пользователя, я получаю ошибки о том, что @security.context является отсутствующей службой. Я попробовал проверки, которые видел в паре других потоков - убедившись, что services.yml заполнен, и убедился, что он правильно включен в мой основной файл конфигурации - и похоже, что все сделано правильно. Вот мой файл security.yml:
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username
api_key_user_provider:
id: security.user.provider.api_key
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# -> custom firewall for the admin area of the URL
admin:
pattern: /admin(.*)
context: admin
form_login:
provider: fos_userbundle
login_path: /admin/login
use_forward: false
check_path: /admin/login_check
failure_path: null
logout:
path: /admin/logout
target: /admin/login
anonymous: true
switch_user: true
remember_me:
secret: '%secret%'
lifetime: 604800 # 1 week in seconds
path: /
# -> end custom configuration
hwi:
pattern: ^/hwi
form_login: false
oauth:
resource_owners:
twitter: "/hwi/check-twitter"
instagram: "/hwi/check-instagram"
google: "/hwi/check-google"
facebook: "/hwi/check-facebook"
apple: "/hwi/check-apple"
login_path: "/hwi/login"
check_path: "/hwi/check"
use_forward: false
failure_path: "/hwi/login"
oauth_user_provider:
service: app.service.hwi
api:
pattern: ^/api/
form_login: false
stateless: true
anonymous: true
simple_preauth:
authenticator: 'api_key_authenticator'
provider: api_key_user_provider
entry_point: api_key_authenticator
access_control:
# URL of FOSUserBundle which need to be available to anonymous users
- { path: ^/api/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/doc, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
# Admin login page needs to be access without credential
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
# Secured part of the site
# This config requires being logged for the whole site and having the admin role for the admin part.
# Change these rules to adapt them to your needs
- { path: ^/admin/, role: [ROLE_SONATA_ADMIN] }
- { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
Вход в систему работает хорошо, как и другие действия, такие как выход из системы, сброс паролей и т. д.
Но @security.context отсутствует.
Что я делаю неправильно? Эта служба устарела или что-то в этом роде?




Думаю, я понял, что мне нужно делать в новых версиях Symfony.
Похоже, я могу использовать @security.token_storage для получения токена (и, следовательно, пользователя).