【问题标题】:Using pyramid authentication with pyramid将金字塔身份验证与金字塔一起使用
【发布时间】:2012-02-07 05:41:39
【问题描述】:

在金字塔文档中,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')   

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

【问题讨论】:

  • 我不得不说,这段代码很好地简要介绍了 SQLAlchemy 身份验证如何工作(或可以工作)。

标签: python authorization pyramid


【解决方案1】:

你的想法是对的。

你的 groupfinder 现在坏了。请注意,您有一个内部带有 return 语句的 for 循环。如果用户有效,则 groupfinder 应该至少返回一个空列表 []。如果用户无效,只返回None

现在密码的 md5 也很糟糕。查看 cryptacular 或 passlib 库以通过 bcrypt 执行加密哈希。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2019-09-14
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多