post thumbnail

Sinatra desde Cero: Sesiones y Cookies

Publicado Por: Alberto Grespan, El 21/11/2013


Detalles del Curso:

Dificultad: Novato

Duración: 30 min


La serie de Sinatra desde Cero, buscará otorgarte el conocimiento necesario para que puedas desarrollar tus propias aplicaciones Web haciendo uso de esta magnifica herramienta.

En este sexto capítulo te enseñaremos a como crear y destruir una de las partes vitales de una aplicación web, las sesiones. También aprenderemos a como persistir estas sesiones utilizando los famosos cookies.

Para comprender correctamente todo lo que hablaremos en esta serie, es conveniente tener un conocimiento básico sobre el lenguaje de Ruby. Podrás conseguir toda la información desees aquí


Sesiones

¿Qué son sesiones? En una aplicación web muchas veces debemos o queremos conocer quien es la persona que está usando nuestra aplicación para poder servirle el contenido apropiado. Sabemos que el protocolo HTTP no tiene estado, por lo tanto de manera directa es imposible conocer si una misma persona está realizando más de una petición y por consiguiente no sabemos si le debemos servir algo particular.

La sesión es la manera que hace posible mantener el estado de un usuario mientras utiliza la aplicación y esto se logra guardando un cookie en el navegador del mismo.

¿Cómo funciona? En Sinatra por ser un Rack Application se emplea el uso de rack.sessiony se guarda el cookie generado del lado del cliente, en ese cookie se va persistiendo data relacionada con la actividad del usuario dentro de nuestra aplicación.

Vamos a observar un pequeño ejemplo de como funciona.

Crear una sesión

Para crear una sesión se realiza por medio de el bloque de configuración (configure block) una vez definido el mismo el objeto de la sesión se encuentra completamente listo para almacenar y recuperar información.

bloque de configuración

El bloque de configuración de Sinatra nos permite personalizar el funcionamiento de nuestra aplicación; el mismo puede ser usado basado en ambientes (desarrollo, pruebas, producción).

require 'sinatra'

configure do
  enable :sessions
end

before do
  content_type :txt
end

get '/set' do
  session[:foo] = Time.now
  "Estableciendo la sesión."
end

get '/fetch' do
  "El valor de la sesión es: #{session[:foo]}"
end

Sinatra automáticamente crea una llave de seguridad para codificar y descodificar las sesiones de manera segura de todas maneras aunque Sinatra cree automáticamente las llaves de seguridad es mucho mejor que nosotros creemos y agreguemos esta llave de manera manual.

Destruir sesión

Destruir una sesión es más fácil que crearla, y solo basta con llamar a session.clear dentro de una de nuestras rutas.

require 'sinatra'

configure do
  enable :sessions
end

before do
  content_type :txt
end

get '/set' do
  session[:foo] = Time.now
  "Estableciendo la sesión."
end

get '/fetch' do
  "El valor de la sesión es: #{session[:foo]}"
end

get '/logout' do
  session.clear
  redirect '/fetch'
end

De la misma manera como lo explicamos en el párrafo anterior dentro de la ruta /logout destruimos la sesión y posterior a esto redirecionamos al usuario hacia la ruta /fetch para comprobar que no existe un valor de la variable sesión.

Cookies

Indirectamente hemos explicado que son cookies y hemos dicho que van en el lado del cliente. Pero… ¿Qué son realmente los cookies? Los cookies son pequeños fragmentos de metadata que se almacenan del lado del usuario y esencialmente existen dos tipos de cookies de sesión y persistentes la diferencia entre ambos es sencilla. Los cookies de sesión expiran cuando el usuario cierra su navegador o destruye la sesión haciendo un logout de la misma. Los cookies persistentes simplemente tienen una fecha de caducidad.

require 'sinatra'

get '/' do
  response.set_cookie "foo", "bar"
  "Cookie establecido. Estas interesado en <a href='/read'>leer</a> su valor?"
end

get '/read' do
  "El valor del cookie es: #{request.cookies['foo']}."
end

get '/delete' do
  response.delete_cookie "foo"
  "El cookie ha sido eliminado."
end

Conclusión

En este sexto capítulo, hemos aprendido a utilizar de manera muy básica las sesiones y los cookies. Si te surge algún tipo de duda no te detengas y déjanos un comentario, que gustosamente lo responderemos.

¡Hasta el próximo capítulo!


¿Te ha gustado esta publicación?

Compártela:

Por Alberto Grespan

Conoce más sobre este autor aquí


comments powered by Disqus