Como usar Sesiones con Subaplicaciones

Este How-to es de gran ayuda cuando tenemos una aplicación que cuenta con una subaplicación para administración y otra para usuarios y que permita el uso de sesiones en cada una de estas subaplicaciones.

Supongamos que tenemos la aplicación principal app.py:

 1 # -*- coding: utf-8 -*-
 2 import web
 3 import user
 4
 5 urls = (
 6     "/user", user.app_user,
 7     "/", 'Index',
 8     "/login", 'Login',
 9     "/logout", 'Logout'
 10 )
 11 #web.config.debug = False # descomentar en producción
 12 app = web.application(urls, locals())
 13 #session = web.session.Session(app, web.session.DiskStore('sesiones'), {'count': 0}) # descomentar en producción
 14
 15 # Quitar en Producción:
 16 if web.config.get('_sesion') is None:
 17     session = web.session.Session(app, web.session.DiskStore('sesiones'), {'count': 0})
 18     web.config._sesion = session
 19 else:
 20     session = web.config._sesion
 21
 22
 23 def session_hook():
 24     web.ctx.session = session
 25
 26 app.add_processor(web.loadhook(session_hook))
 27
 28
 29 class Index:
 30     def GET(self):
 31         if session.get('logged_in', False):
 32             raise web.seeother('/user')
 33         return '<h1>Usted no esta conectado.</h1><a href="/login">Conectese Ahora</a>'
 34
 35 class Login:
 36     def GET(self):
 37         session.logged_in = True
 38         raise web.seeother('/')
 39
 40 class Logout:
 41     def GET(self):
 42         session.logged_in = False
 43         raise web.seeother('/')
 44
 45
 46 if __name__ == "__main__":
 47     app.run()

Y queremos incluirle a nuestra aplicación(app.py) una aplicación(subaplicación) para los usuarios llamada “user.py“, la cual tendría el siguiente código:

 1 # -*- coding: utf-8 -*-
 2 import web
 3
 4 urls = (
 5   "", "reuser",
 6   "/", "monitoreo"
 7 )
 8
 9 class reuser:
 10     def GET(self):
 11         raise web.seeother('/')
 12
 13 class monitoreo:
 14     def GET(self):
 15         return "\
 16                 <p>Ruta actual en App user(%s) - Conectado: %s.</p> \
 17                 <h1>Usted esta conectado.</h1><a href='/logout'>Desconectese</a>\
 18                " % (web.ctx.path, web.ctx.session.get('logged_in'))
 19
 20 app_user = web.application(urls, locals())

Si ejecutamos nuestro código:

$ python app.py

E ingresamos a la URL http://127.0.0.1:8080/. veremos cómo se gestionan las sesiones en el aplicativo principal app.py y en la subaplicación user.py.

Autor: Jolth

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s