2011-10-27 5 views
0

動作しない、データベース内のパスワードでログインフォームでパスワードを入力し//www.djangobook.com/en/beta/chapter12/マッチングは、私はDjangoのdocumentaionで定義されたメソッドを使用し

def login(request): 
    m = members.get_object(username__exact=request.POST['username']) 
    if m.password == request.POST['password']: 
     request.session['member_id'] = m.id 
     return HttpResponse("You're logged in.") 
    else: 
     return HttpResponse("Your username and password didn't match.") 

が、それは正しくパスワードと一致しないように聞こえる!私は、有効なユーザ名とパスワードを入力しますが、私はこの行を削除すると、それは動作しますが、ユーザーを見つけることができません:

if m.password == request.POST['password']: 

私はそのパスワードをハッシュ化されているため、ユーザこと、それはプレーンなパスワードと一致していないと思いますログインフォームに入力してください。

ここで何をすればよいですか?

+2

Djangoの認証フレームワークを使用する必要があります。 – DrTyrsa

答えて

4

これにはuser.check_passwordを使用する必要があります。その理由は、パスワードがハッシュされて保存されているため、このように直接比較することができないためです。

P.S.認証のバックエンドがどのように機能するかについて、

1

これは、認証方法の例ではありません。実際の例はビットfurther down the pageです。

+0

ありがとう、これは良い解決策です –

関連する問題