2012-02-07 11 views
10

En la documentación de la pirámide, el Tutorial de despacho de Sqlalchemy utiliza datos ficticios en security.py. Necesitaba usar datos de MySQL por lo que he implementado de esta manera:Uso de la autenticación piramidal con la pirámide

Mi código de la conexión

@view_config(route_name='login', renderer='json',permission='view') 
def user_login(request): 
    session = DBSession 
    username = request.params['username'] 
    password = request.params['password'] 
    sha = hashlib.md5() 
    sha.update(password) 
    password = sha.digest().encode('hex') 
    user = session.query(Users).filter(and_(Users.username==username,Users.password ==password)).count() 
    if(user != 0): 
     headers = remember(request, username) 
     return HTTPFound(location = '/index/', 
          headers =headers) 
    else: 
     print "error" 

Lo anterior hace que el sistema recuerde nombre de usuario que se utilizará en security.py. A continuación, utilizar esto para conseguir el grupo se encuentra el usuario.

from .models import (
    DBSession, 
    Users, 
    ) 

def groupfinder(userid, request): 
    session = DBSession() 
    for instance in session.query(Users).filter(Users.username==userid): 
     group = 'group:'+instance.group 
     lsth = {'userid':[group]} 
     return lsth.get ('userid') 

¿Es esta la mejor manera de utilizar la autorización pirámide?

+0

Debo decir que este código es una breve introducción a cómo funciona la autenticación SQLAlchemy (o puede funcionar). – phsource

Respuesta

14

Tiene la idea correcta.

Su buscador de grupo está roto en este momento. Observe que tiene un bucle for con una declaración de retorno adentro. El buscador de grupo debe devolver al menos una lista vacía [] si el usuario es válido. Solo devuelva None si el usuario no es válido.

También un md5 de la contraseña es bastante malo en estos días. Mire las bibliotecas cryptacular o passlib para realizar un hash criptográfico en cambio a través de bcrypt.

+0

gracias por el aviso en md5 creo que el uso incorrecto de passlib – Madawar

Cuestiones relacionadas