GOS WebSocket Bundle Совместное использование сеанса oAuth
Я использую Symfony 3.3 и WebSocketBundle для сокетов сообщений и системы уведомлений. Также был использован FOS oAuth и пользовательский пакет FOS для аутентификации приложения.
Вопрос: я хочу получить пользователя в теме. Я пытаюсь настроить совместное использование сеанса...
Все отлично работает.. Но это общедоступный php-сеанс. В моем проекте я использовал сеанс oAuth (с токенами доступа oAuth) и хочу получить пользователя из сеанса oAuth. Как я могу это сделать?
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
socket:
pattern: ^/test/socket
anonymous: false
fos_oauth: true
public:
methods: [POST]
pattern: ^/api/v1/users
security: false
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: fos_user_security_check
login_path: fos_user_security_login
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: true # can be omitted as its default value
GOSWebSocketBundle Config
gos_web_socket:
server:
port: 8080 #The port the socket server will listen on
host: 127.0.0.1 #The host ip to bind to
router:
resources:
- '@WebSocketsBundle/Resources/config/pubsub/routing.yml'
client:
firewall: socket #can be an array of firewalls
session_handler: '@session.handler.pdo'
Framework: сеанс: идентификатор обработчика: сеанс. handler.pdo
Сервисы:
services:
ws.topic.messages:
class: WebSocketsBundle\Topic\ChatTopic
arguments:
- '@gos_web_socket.websocket.client_manipulator'
tags:
- { name: gos_web_socket.topic }
pdo:
class: PDO
arguments:
- 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%'
- '%database_user%'
- '%database_password%'
calls:
- [ setAttribute, [3, 2] ] # \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION
session.handler.pdo:
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
arguments:
- '@pdo'
- { lock_mode: 0}