3.6 KiB
3.6 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
589fc831f9fc0f352b528e77 | Authentication with Socket.IO | 2 | Autenticación con Socket.IO |
Description
Agregue 'passport.socketio' como una dependencia y solicítelo como 'passportSocketIo'. Ahora solo tenemos que decirle a Socket.IO que lo use y establezca las opciones. Asegúrese de que esto se agregue antes del código de socket existente y no en el escucha de conexión existente. Para su servidor debe verse como sigue:
io.use (passportSocketIo.authorize ({ cookieParser: cookieParser, clave: 'express.sid', secreto: process.env.SESSION_SECRET, tienda: sessionStore }));Opcionalmente, también puede pasar "éxito" y "fallar" con una función a la que se llamará después de que se complete el proceso de autenticación cuando un cliente intente conectarse. Ahora se puede acceder al objeto de usuario en su objeto de socket como
socket.request.user
. Por ejemplo, ahora puede agregar lo siguiente: console.log('user ' + socket.request.user.name + ' connected');
y se registrará en la consola del servidor que se ha conectado! Envía tu página cuando creas que lo has hecho bien. Si te encuentras con errores, puedes revisar el proyecto hasta este punto aquí . Instructions
Tests
tests:
- text: passportSocketIo es una dependencia
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/package.json") .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, "passport.socketio", "Your project should list "passport.socketio" as a dependency"); }, xhr => { throw new Error(xhr.statusText); })'
- text: passportSocketIo se requiere correctamente
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js").then(data => { assert.match(data, /require\(([""])passport\.socketio\1\)/gi, "You should correctly require and instantiate "passport.socketio"");}, xhr => { throw new Error(xhr.statusText); })'
- text: passportSocketIo está correctamente configurado
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /io\.use\(.+\.authorize\(/gi, "You should register "passport.socketio" as socket.io middleware and provide it correct options"); }, xhr => { throw new Error(xhr.statusText); })'
Challenge Seed
Solution
// solution required