簡體   English   中英

使用金字塔的金字塔身份驗證

[英]Using pyramid authentication with 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"

以上使系統記住將在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')   

這是使用金字塔授權的最佳方式嗎?

你有這個想法。

您的群組查找器現在已被破壞。 注意你有一個帶有return語句的for循環。 如果用戶有效,則groupfinder應至少返回一個空列表[] 如果用戶無效,則僅返回None

這些天密碼的md5也很糟糕。 查看加密或passlib庫,以通過bcrypt執行加密哈希。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM