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