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. Sigue leyendo

Anuncios

Sesiones con las Sub-aplicaciones

Nota:

Esta solución se ha tomado de este post en la lista de distribución de Web.py.

Problema

En su comportamiento por defecto, la información de la sesión sólo se puede compartir desde dentro de la aplicación principal, incluso si usted ‘importa‘ la sesión desde otro módulo.
Usted necesita ser capaz de acceder a la información de la sesión de la ‘Sub-Aplicación‘ pero como? Sigue leyendo

Autenticación de Usuarios con la base de datos PostgreSQL

Problema

Usted quiere un sistema para autentificar a los usuarios, con una base de datos PostgreSQL.

Solucion

Un sistema de autenticación de usuario puede tener una gran cantidad de funciones. Para este ejemplo, sólo se va a gestionar el proceso de autenticación, a través de una base de datos PostgreSQL.

Lo Necesario

web.py para todas las funciones web y hashlib para almacenar las contraseñas de forma segura.

  1 # -*- coding: utf-8 -*-
  2 import web
  3 import hashlib
  4

1. La base de datos

En primer lugar, se necesita una tabla para los usuarios. Este esquema es muy simple, pero es suficiente para un montón de proyectos.

$ psql -d myweb
CREATE TABLE users (
  id serial NOT NULL,
  usuario varchar(80) NOT NULL UNIQUE,
  pass char(40) NOT NULL,
  email varchar(100) NOT NULL,
  privilege integer NOT NULL DEFAULT 0,
  CONSTRAINT utilisateur_pkey PRIMARY KEY (id)
);

Sigue leyendo

Autenticación de Usuario en Web.py con SQLite

En este pequeño How-to realizaremos un pequeño aplicativo que nos permita tener una idea clara de cómo funcionan las sesiones y lo importante que son para nuestros App’s.

Un sistema de autenticación de usuario se compone de unas pocas partes. Adición de usuarios, logueo de usuarios, cierre de la sesión y comprobar si los usuarios están conectados.

Creamos nuestra bases de datos en SQLite:

$ sqlite3 users.db

sqlite> .tables
users
sqlite> insert into users values ('jolth', '123456');
sqlite> select * from users;
jolth|123456
sqlite> 
sqlite> .quit

Sigue leyendo

Autenticación de Usuario

Problema

Usted quiere un sistema para autentificar a los usuarios.

Solución

Un sistema de autenticación de usuario se compone de unas pocas partes. Adición de usuarios, logeo de usuarios, cierre de la sesión y comprobar si los usuarios están conectados. También se requiere una base de datos. Para este ejemplo vamos a utilizar MD5 y SQLite.

import hashlib
import web    

def POST(self):
    i = web.input()

    authdb = sqlite3.connect('users.db')
    pwdhash = hashlib.md5(i.password).hexdigest()
    check = authdb.execute('select * from users where username=? and password=?', (i.username, pwdhash))
    if check: 
        session.loggedin = True
        session.username = i.username
        raise web.seeother('/results')   
    else: return render.base("Those login details don't work.")

Nota:

No utilice este código en el sitio real – esto es sólo para ilustración

cookies

Problema

Usted quiere establecer y recuperar las cookies de un usuario que navega por el sitio.

Solución

Web.py viene con un método fácil de utilizar para configurar/recuperar(setting/getting) las cookies.

Setting Cookies

Información general

setcookie(name, value, expires="", domain=None, secure=False):
  • name (string) – El nombre real de la cookie, según los datos almacenados por el navegador y devuelto al servidor.
  • value (string) – El valor que se desea almacenar bajo ese nombre.
  • expires (int) – Opcionalmente, es el tiempo en segundos hasta que el navegador debe expirar la cookie. Nota: éste debe ser un número entero, no una cadena.
  • domain (string) – El dominio de la cookie es válida. por defecto, establecido en el host accedido, esto le permite establecer el dominio, en lugar de un host (tal como .webpy.org).
  • secure (bool) – Si es True, requieren que la cookie sólo se enviará a través de HTTP/S.

Sigue leyendo

Uso de la sesión con recargador

Problema

Hay algunos problemas en el uso de sesiones cuando se ejecuta la aplicación en modo de depuración. ¿Hay alguna solución alternativa?

Solución

Web.py ejecuta el programa en modo de depuración(debug)[1] cuando se ejecuta usando el servidor web incorporado. Simple solución a esto es desactivar el modo de depuración, que se puede hacer estableciendo “web.config.debug = False“.

import web
web.config.debug = False

# resto de su código

Si desea utilizar sesiones en modo de depuración, entonces he aquí una solución temporal. Sigue leyendo