Использование аутентификации pyramid с pyramid

в документации пирамиды учебник SQLAlchemy Dispatch использует фиктивные данные в 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 ответов


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

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

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