2010-09-17 18 views

Respuesta

93

se puede hacer eso con mucha facilidad usando:

  • conexion: http://senchalabs.github.com/connect/

    Conexiones es como estante en Ruby. Le brinda una capa adicional en la que puede "jugar" con autenticación, sesiones, cookies, entre otros.

Otra opción es utilizar marcos:

  • Express.js: http://expressjs.com/

    parece ser el marco Node.js más utilizado. Es como Sinatra para Ruby y se ejecuta encima de connect.

  • Geddy: http://geddyjs.org/

    Si usted quiere hacer WebApps más complejas, Geddy es el que usted elija. Es como Rails para Ruby.

+0

¿Qué ofrece geddy por encima/por encima de lo expreso? - ¿La misma diferencia que Sinatra y Rails? – Michael

+1

@Michael [geddy vs express] (http://stackoverflow.com/questions/5683916/node-js-express-vs-getty/5683938#5683938) – Raynos

+4

Creo que debería mencionar que Express está construido sobre Connect - - Cualquier característica o complemento que sea compatible con Connect funcionará con Express. –

2

Si está buscando un desarrollo web serio utilizando Node.js, use Express framework; admite sesiones.

Cree el proyecto Express con las opciones --sessions.

$ express --sessions 

Para instalar Express:

$ npm install express -g 
+0

Ya no es compatible. Tienes que agregar 'cookie-session' a tu' package.josn' para que funcione. –

12

Sólo sacar datos a memcache o algún otro mecanismo de almacenamiento en caché. No cargaría sus servidores con este tipo de cosas. ¿Cuál es el sentido de un servidor web super delgado que tiene que recordar cosas?

También trataría de desarrollar su sitio como una aplicación y no un sitio web, o tratar su sitio web como una aplicación, utilizar las maravillosas características de html5 como almacenamiento local/bases de datos locales y reducir la cantidad de tráfico entre máquinas de servidor y cliente.

Si todo lo demás falla (o el sitio es pequeño), entonces lo que le impide escribir su propia clase de sesión. No es tan difícil. Especialmente si es algo de tipo memoria. Ponga un temporizador de lógica para las sesiones de tiempo de espera y listo. Maldición en un lenguaje dinámico como JavaScript, debería ser fácil.

La estructura debe ser un diccionario con la clave siendo sesión y valor siendo un objeto que contiene detalles de la última comunicación y capacidades (para permitir el acceso a ciertas características). Agregue una función de barrido para borrar sesiones antiguas que han expirado. y bingoUn servicio de sesión básico. un control básico de "es la clave de sesión en la lista ... sí/no ... obtener detalles" ... y creo que eso es ... o hay alguna característica que me falta.

Personalmente evitaría cualquier herramienta de terceros el mayor tiempo posible. Las arenas del tiempo cambian muy rápido y siempre puedes depender del código desarrollado por ti mismo.

+1

Su último comentario no es cierto por varias razones. Si obtienes código de un marco popular, probablemente haya pasado por suficientes pruebas para investigarlo; su código es tan bueno como las pruebas que usted mismo puede realizar. Si no actualiza el marco, las arenas nunca cambian. Si actualiza, su propio código tiene una mayor probabilidad de romperse que el código de un tercero, que podría haberse actualizado junto con el código del servidor. Tu propio código debe ser actualizado manualmente. Entonces, básicamente en cada escenario, el código popular de terceros es una mejor opción. "No reinventar la rueda" es un dicho popular por una razón. – Tyrsius

+14

Bueno, en mi experiencia, cada vez que agrega una nueva herramienta de terceros, se une a ese tercero para la esperanza de vida del producto que desarrolla. Esto es malo, la falta de control y comprensión de la idea de alguien de buen código que ha sido ennegrecida es muy difícil de tratar cuando algo sale mal (siempre ocurre) en la caja negra mencionada. Encontrará muchas renuncias adjuntas a acuerdos de licencia de terceros, "uso bajo su propio riesgo" es lo que veo a menudo. Las arenas del tiempo cambian rápidamente y el hecho de que alguien diga que el código es 1.0 no significa que ya no necesite más. – WeNeedAnswers

+0

Esto no es realmente relevante para casi todos los módulos de nodo, ya que son de código abierto. – Tyrsius

6

La respuesta de Donald es buena: una vez que ingresa en el patrón de cebolla del middleware de conexión, debe tomar una decisión sobre qué tipo de sesión usar. El predeterminado en express es una MemoryStore, y no está destinado para uso en producción. Estas son algunas de sus opciones:

Mongohttps://github.com/mikkel/express-session-mongo - Asegúrese de utilizar la opción 'native_parser: false'

Redishttps://github.com/visionmedia/connect-redis - Muy bien, pero si usted no está utilizando para Redis pub/sub o almacenamiento podría no ser ideal.

Nota, hay otras opciones, depende de su proyecto. Busque algo que pueda introducir aprovechando su pila de tecnología existente.

+3

Quiero centrarme en "El predeterminado en express es un MemorySrote, y no está destinado para uso en producción". Vaya a http://engineering.linkedin.com/nodejs/blazing-fast-nodejs-10-performance-tips-linkedin-mobile y lea el punto 7. – guiomie

+4

Eso es interesante, entonces, ¿cómo administraría los permisos de los usuarios si no fuera por el mantenimiento de las sesiones? ? – Costa

Cuestiones relacionadas