Использование аутентификации пирамиды с пирамидой

В документации по пирамиде в учебнике по рассылке Sqlalchemy используются фиктивные данные в security.py. Мне нужно было использовать данные mysql, поэтому я реализовал его следующим образом:

Мой код входа

@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"

Вышеупомянутая система запоминает имя пользователя, которое будет использоваться в security.py. Ниже я использую это, чтобы получить группу, в которой находится пользователь.

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')   

Это лучший способ использовать авторизацию пирамиды?

Ответ 1

У вас есть идея.

В настоящее время ваш файерфон отключен. Обратите внимание, что у вас есть for-loop с оператором return внутри. Групповой фильтр должен возвращать не менее пустой список [], если пользователь действителен. Возвращайте None только если пользователь недействителен.

Также md5 пароля довольно дрянной в эти дни. Посмотрите на криптовальные библиотеки или библиотеки passlib для выполнения криптографического хэша вместо bcrypt.