2012-02-07 34 views
10

Trong tài liệu kim tự tháp, Thuật sĩ văn bản Sqlalchemy sử dụng dữ liệu giả trong security.py. Tôi cần thiết để sử dụng dữ liệu mysql vì vậy tôi thực hiện nó như thế này:Sử dụng xác thực kim tự tháp với kim tự tháp

Login My Mã

@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" 

Trên đây làm cho hệ thống nhớ tên người dùng sẽ được sử dụng trong security.py. Bên dưới, tôi sử dụng quyền này để đưa nhóm người dùng vào.

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

Đây có phải là cách tốt nhất để sử dụng ủy quyền kim tự tháp không?

+0

Tôi phải nói, mã này thực sự là một giới thiệu ngắn gọn về cách xác thực SQLAlchemy hoạt động (hoặc có thể hoạt động). – phsource

Trả lời

14

Bạn có ý tưởng đúng.

Kính ngắm của bạn bị hỏng ngay bây giờ. Lưu ý rằng bạn có một vòng lặp for với câu lệnh return bên trong. Nhóm phải trả lại ít nhất danh sách trống [] nếu người dùng hợp lệ. Chỉ trả lại None nếu người dùng không hợp lệ.

Đồng thời, mật khẩu md5 cũng khá là khan hiếm trong những ngày này. Nhìn vào các thư viện mật mã hoặc passlib để thực hiện một băm mật mã thay vì thông qua bcrypt.

+0

cảm ơn cho người đứng đầu lên trên md5 tôi nghĩ rằng sử dụng passlib bệnh – Madawar

Các vấn đề liên quan