2012-02-07 10 views
10

ピラミッドのドキュメントでは、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') 

これはピラミッドの承認を使用するための最良の方法ですか?

+0

このコードは、SQLAlchemy認証がどのように機能するか(または動作するか)を簡単に紹介したものです。 – phsource

答えて

14

あなたは考えが正しいです。

あなたのグループファインダーは現在壊れています。内部にreturn文を含むforループがあることに注目してください。 groupfinderは、少なくともを返します。ユーザーが有効な場合は、空のリスト[]です。ユーザーが無効な場合はNoneを返すだけです。

また、最近のパスワードのmd5はかなり嘘つきです。暗号化されたハッシュをbcrypt経由で実行するためのcryptacularライブラリまたはpasslibライブラリを見てください。

+0

md5のヘッドアップに感謝します。私は悪いと思うpasslib – Madawar

関連する問題