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}

0 ответов

Другие вопросы по тегам