Использование аутентификации 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.