使用金字塔的金字塔身份验证

Mad*_*war 10 python authorization pyramid

在金字塔文档中,Sqlalchemy Dispatch Tutorial使用虚拟数据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"
Run Code Online (Sandbox Code Playgroud)

以上使系统记住将使用的用户名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')   
Run Code Online (Sandbox Code Playgroud)

这是使用金字塔授权的最佳方式吗?

Mic*_*kel 14

你有这个想法.

您的群组查找器现在已被破坏.注意你有一个带有return语句的for循环.如果用户有效,则groupfinder应至少返回一个空列表[].仅None在用户无效时返回.

这些天密码的md5也很糟糕.查看加密或passlib库,以通过bcrypt执行加密哈希.