2012-01-07 12 views
6

autentico el servidor con express.session. La forma normal de comunicar esa información de sesión del lado del cliente es reenviar la página con el nuevo HTML generado en el lado del servidor, pero esto requiere una recarga.Acceder a la información de sesión del servidor en el cliente sin recarga ni solicitud adicional

Tengo una aplicación de una página y quiero evitar la recarga. ¿Hay alguna manera de acceder a la información sobre el usuario conectado del lado del cliente? ¿Esta información está almacenada en una cookie? ¿Cómo puedo acceder sin recargar la página o hacer una solicitud de servidor adicional?

+2

hacer una ruta en expreso que devuelve algunos datos de sesión de usuario en JSON y lo trae con una petición Ajax en el lado del cliente. – stagas

+0

Cuando dices "aplicación de una página" ¿realmente quieres decir dos páginas, una página de inicio de sesión y una página de aplicación? ¿O una página contiene el formulario de inicio de sesión y la aplicación? – Stobor

+0

@Stobor: Esa es la cosa. Quiero fusionar la página de inicio de sesión con el resto y mostrar una u otra dependiendo de 'express.session'. – Randomblue

Respuesta

3

La única manera de hacer esto sería la de cualquiera de incluir la información en la respuesta del servidor inicial (tal vez un objeto JS generado dinámicamente incrustado en el HTML) o haciendo una segunda solicitud como alessioalex sugirió.

No es posible obtener información desde el servidor sin hablar con el servidor ...

+0

Sí, estoy interesado en cómo puedo completar la respuesta inicial del servidor. Quiero seguir publicando páginas de forma estática (es decir, no usar elementos de lujo como Jade). Estaba pensando en usar cookies ... – Randomblue

+0

Si está buscando servir contenido dinámico en un objeto javascript, se verá obligado a utilizar algún tipo de herramienta como jade para poblarlo. Creo que es posible establecer la información en las cookies y luego acceder a ellas en el cliente (document.cookie, creo), sin embargo, si la información es segura, no lo recomendaría. No puede estar seguro de cómo el sistema de los usuarios manejará/almacenará/tratará las cookies. Si lo hace de esta manera, nunca debe confiar en la información del servidor de cookies. La información de las cookies puede ser modificada por el usuario y no debe copiarse nuevamente en la sesión –

+0

. Si está buscando establecer cookies, probablemente pueda usar https://github.com/jed/cookies. No lo he usado (y puede haber una manera más fácil de expresarlo), sin embargo, no tengo tiempo ahora para verificarlo. –

3

Como sugirió @stagas, puede crear una ruta personalizada con Express, como /user y devolver datos de sesión (detalles del usuario) usando JSON. De esa forma no necesitarías actualizar la página.

Ejemplo:

app.get('/user', function (req, res) { 
    res.json(req.session.user); 
}); 
+0

No deseo la solicitud adicional ... – Randomblue

+0

Puede usar un middleware de cookies donde puede colocar información sobre el usuario, pero no confiaría en eso para verificar si el usuario está conectado o no. Las cookies no son las más seguras, por lo que si realmente no desea realizar una solicitud adicional al servidor, simplemente almacene allí información no esencial (por ejemplo, sexo, edad, etc.). – alessioalex

Cuestiones relacionadas