2012-02-07 28 views
10

Piramit belgelerinde, Sqlalchemy Dispatch Tutorial, security.py içinde kukla verileri kullanır. Ben böyle hayata yüzden MySQL verilerini kullanmak için gerekli:Piramit kimlik doğrulamasını piramitle kullanma

Benim Girişi Kod yukarıdaki sistemi yapar

@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 kullanılacak kullanıcı adını hatırlıyorum. Aşağıda, kullanıcının bulunduğu grup almak için bunu kullanabilir.

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') 

bu piramit yetki kullanmak için en iyi yolu var mı?

+0

Bu kod, SQLAlchemy kimlik doğrulamasının nasıl çalıştığına (veya çalışabileceğine) gerçekten iyi bir kısa giriş olduğunu söylemeliyim. – phsource

cevap

14

Doğru fikre sahipsiniz.

Grup bulucunuz şu anda bozuk. İçinde dönüş ifadesi olan bir for döngüsü var dikkat edin. Grupfinder, kullanıcı geçerliyse en az boş bir liste [] dönmelidir. Kullanıcı geçersizse yalnızca None'u iade edin. Ayrıca bu günlerde şifrenin bir md5'i oldukça berbattır. Bcrypt yoluyla bir kriptografik karma gerçekleştirmek için kriptacular veya passlib kitaplıklarına bakın.

+0

md5 üzerindeki başlıklar için teşekkürler çünkü hasta şifresini kullanıyorum – Madawar

İlgili konular