2012-08-12 22 views
29

que estoy haciendo gestión cookie de sesión con expreso con algo como esto:¿Cómo se pueden usar cookies con superagente?

req.session.authentication = auth; 

Y comprobar las direcciones URL autenticados con algo así como

if(!req.session.authentication){res.send(401);} 

pruebas Ahora que estoy construyendo para las direcciones URL con moka , superagent y should, sin embargo, parece que no puedo encontrar la forma de obtener/configurar la cookie con el agente superagente. Incluso traté de solicitar el inicio de sesión antes de la prueba autenticada pero no está funcionando,

He intentado agregar la solicitud al inicio de sesión en la declaración anterior para la suite BDD mocha, sin embargo, todavía me dice que la solicitud es sin autorización, he probado la autenticación haciendo las solicitudes desde el navegador, sin embargo, no está funcionando desde el paquete ninguna idea de por qué?

Respuesta

28

Use superagent.agent() (en lugar de simple viejo superagent) para que las solicitudes tengan cookies persistentes. Consulte 'Preserving cookies' in the superagent docs, o los ejemplos de código: agency.js, controller.test.js.

+2

Tenga en cuenta que 'superagent.agent()' tiene problemas, [sin papeles importantes en la forma en que maneja las cookies] (https://github.com/visionmedia/superagent/issues/352) para la mayoría de las definiciones de petición - algo más complicado que un 'get (url, opts, cb)' requiere engancharse en métodos privados no documentados. –

+3

De hecho, la documentación tampoco menciona las cookies. Realmente me estaba empezando a gustar esta biblioteca y tenía muchas esperanzas por parte del autor, pero resulta inútil si quieres usar una cookie de sesión. –

+1

esto no funcionó/​​si lo hizo no es realmente suficiente ... alguien puede dar un ejemplo de cómo funciona ... – Zargold

13

Parece que el siguiente código funciona bien;

req.set ('Cookie', "cookieName1 = cookieValue1; cookieName2 = cookieValue2");

+0

buen hombre - ¡eso es una joya de respuesta! – danday74

1

Ya que menciona que necesita para obtener tanto y configura la cookie:

Obtener:

const request = await Superagent.get('...') 

const cookie = request.header['set-cookie'] 

Set:

Superagent.post('...').set('Cookie', 'cookie_info') 
4

Si el problema está en el envío de las galletas para solicitudes CORS use .withCredentials() método described here

request 
    .get('http://localhost:4001/') 
    .withCredentials() 
    .end(function(err, res) { }) 
Cuestiones relacionadas