Amir Arad
Amir Arad

Reputation: 6754

how to use both express.io and passport.socketio authentication features globally

socket.io supports a single global authorization method with no middleware feature. Both express.io and passport.socketio depend on this feature as an injection point for their logic.

express.io attaches the express session to the request, and passport.socketio attaches the inflated user object. how do I combine the two features elegantly?

Upvotes: 1

Views: 409

Answers (1)

Amir Arad
Amir Arad

Reputation: 6754

The only way I found is grabbing the authorization callback of express.io from socket.io and wiring it to be passport.socketio's success callback:

    app.io.configure(function() {
        var expressAuth = app.io.get('authorization');
        var sessionConfig = {
            ...
            success : expressAuth  // callback on success
        };
        app.io.set('authorization', passportSocketIo.authorize(sessionConfig));
    });

This works for me, but It's coupled with the order of the 'authorization' registrations. Any better ideas?

Upvotes: 0

Related Questions