2016-10-02 3 views
0

私はFlaskとMongoDBを使って、passlibでユーザー名とパスワードの検証を実装しようとしています。python passlib verifyが一致しません

models.pyからクラス:Pythonシェルから

from passlib.hash import sha256_crypt 

class Users(object): 
    def __init__(self, username='', password='', collection=db.users, articles=''): 
    self.collection = collection 
    self.username = username 
    self.password = password 
    self.articles = [] 

def addUser(self): 
    self.collection.insert({'username': self.username, 'password': sha256_crypt.encrypt('self.password'), 'articles': self.articles}) 

に、私はパスワードを持つユーザーアリスの秘密 'を作成:モンゴシェルから

>>> import models 
>>> alice = models.Users() 
>>> alice.username = 'alice' 
>>> alice.password = 'secret' 
>>> alice.addUser() 

を、私がいることを確認しますクリアパスワードの代わりにハッシュを使用して文書を正しく作成しました。

> db.users.find() 
{ "_id" : ObjectId("57f15d9f815a0b6c1533427f"), "username" : "alice", "articles" : [ ], "password" : "$5$rounds=535000$Oq1hy1INzO59nu0q$FzMz1DtBWDwM.sw0AhrlVA8esgE30n8rr/NjOltB8.7" } 

以降、私たちは、文書に格納されているハッシュを使って、pythonシェルからパスワードを確認できるはずですね。

>>> sha256_crypt.verify('secret','$5$rounds=535000$Oq1hy1INzO59nu0q$FzMz1DtBWDwM.sw0AhrlVA8esgE30n8rr/NjOltB8.7') 
False 

しかし、誰かが私に説明することができますか?

答えて

0
あなたがいない self.passwordしかし 'self.password'

だからあなたは下記をごaddUser方法を変更する必要が暗号化しているので、何が起こっている

def addUser(self): 
    self.collection.insert({'username': self.username, 'password': sha256_crypt.encrypt(self.password), 'articles': self.articles}) 
+0

神は、それほど明白XDXD - ありがとうございます! – Kuruwan