¿Cuál es la mejor forma de administrar las variables de sesión en Node.js? ¿Hay alguna biblioteca?Administrar sesiones en Node.js?
Respuesta
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.
nodejs proporciona una API http básica. http es sin estado, y existen ideas de sesiones y variables de sesión en framework/protocols build en la parte superior de http. http://en.wikipedia.org/wiki/Session_%28computer_science%29
Eche un vistazo a http://geddyjs.org/ o http://expressjs.com/ como ejemplos de marcos web construidos con un nodo que proporciona sesiones.
Thansk, se verá en expreso. – Timmy
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
Ya no es compatible. Tienes que agregar 'cookie-session' a tu' package.josn' para que funcione. –
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.
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
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
Esto no es realmente relevante para casi todos los módulos de nodo, ya que son de código abierto. – Tyrsius
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.
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
Eso es interesante, entonces, ¿cómo administraría los permisos de los usuarios si no fuera por el mantenimiento de las sesiones? ? – Costa
- 1. Cómo administrar sesiones en node.js sin marcos
- 2. ¿Manera correcta de administrar sesiones en PHP?
- 3. ¿La mejor manera de administrar sesiones en NHibernate?
- 4. Cómo administrar los módulos internos Node.JS
- 5. El reinicio del servidor Node.js suelta las sesiones
- 6. ¿Cómo administrar las sesiones de NHibernate en una aplicación de formularios de Windows de larga vida?
- 7. Administrar volumen de aplicaciones en Windows 7
- 8. Marco del servidor Delphi para administrar sesiones y responder con solicitudes JSON ajax?
- 9. ¿Cómo puedo hacer que mis sesiones tengan el último subdominio cruzado en Node.js Express?
- 10. Sesiones a través de subdominios en Express
- 11. sesiones CodeIgniter vs sesiones de PHP
- 12. Sesiones persistentes en Meteor
- 13. Desvinculación de eventos en Node.js
- 14. Node.js/Express.js cookie de gestión de sesiones para ser cookie de sesión
- 15. ¿Cómo administrar una sesión por ficha?
- 16. Cómo administrar múltiples archivos JS del lado del servidor con Node.js
- 17. Galletas asegurar y Sesiones
- 18. Cómo contar sesiones en la aplicación de servidor asp.net
- 19. php: sesiones basadas en cookies
- 20. sesiones fuertemente tipadas en asp.net
- 21. Problema con sesiones en WebLogic
- 22. Variables estáticas en las sesiones
- 23. ¿Cómo administrar TimeZones en Sitecore?
- 24. Administrar índices db en heroku
- 25. Administrar caché sincrónicamente en js
- 26. Compartir sesiones entre instancias de tomcat (sin utilizar Sesiones adhesivas)
- 27. CGI :: sesiones de intercambio de sesiones entre los clientes!
- 28. ¿Gestión de sesiones de NHibernate?
- 29. ¿Cómo administrar múltiples archivos de esquema JSON?
- 30. Fiddler no muestra sesiones
¿Qué ofrece geddy por encima/por encima de lo expreso? - ¿La misma diferencia que Sinatra y Rails? – Michael
@Michael [geddy vs express] (http://stackoverflow.com/questions/5683916/node-js-express-vs-getty/5683938#5683938) – Raynos
Creo que debería mencionar que Express está construido sobre Connect - - Cualquier característica o complemento que sea compatible con Connect funcionará con Express. –