2016-05-27 20 views
0

私は自分のビューで認証メソッドを使用しようとしていますが、 "存在しません"と返すので、パスワードフィールドにMD5ハッシュを使用しています。問題のthats場合Django - MD5ハッシュでパスワードを認証する方法

forms.py

class LoginForm(forms.Form): 
    email = forms.EmailField() 
    password = forms.CharField(widget=forms.PasswordInput) 

    #This Method Hash the password 
    def clean_password(self): 
     clearPassNoHash = self.cleaned_data['password'] 
     self.password = md5.new(clearPassNoHash).hexdigest() 
     return self.password 

views.py

def auth_login(request): 
    args = {} 
    form = LoginForm(request.POST) 
    email = request.POST['email'] 
    password = request.POST['password'] 
    user = authenticate(email=email, password=password) 
    if user is not None: 
     login(request, user) 
     print("Exist") 
    else: 
     print("Does not exist") 

」tは私が知っています実際に動作するcheck_password()メソッドで試してみましたが( )、私はなぜ認証に問題があるのか​​分かりません。

------------ ----------------- 更新 ------------------------------ -

Views.py

def auth_login(request): 
    args = {} 
    form = LoginForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 

     user = authenticate(username=username, password=password) 
     if user is not None: 
      print("existe") 
      print user 
     else: 
      print user 

    args['form'] = form 
    return render(request, 'login/login.html', args) 

forms.py

class LoginForm(forms.Form): 
    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 

その他の観察: 私は私のカスタムモデル

AUTH_PROFILE_MODULE = 'StudentUsers.StudentRegistration' 

を使用するために私のsettings.pyでこれを持っており、これは私が私のモデルに追加するユーザ名フィールドです:

class StudentRegistration(AbstractBaseUser, models.Model): 
    username = models.CharField(max_length = 25, null=False, default="", unique=True) 
+0

この認証方法は何ですか?ユーザーは本当に存在しますか?また、form.is_valid() – e4c5

+0

(電子メール=電子メール、パスワード=パスワード)を確認した後、form.cleaned_dataを使用してください。 – BrianCas

+0

あなたはauthenticateメソッドを呼び出していることが明らかです。私の質問は、正確に認証方法とは何ですか?それはどこから来たのですか? – e4c5

答えて

0

あなたがする必要がありますリクエストから直接ではなく、フォームのcleaned_dataから電子メールとパスワードを取得します。ドキュメントからcleaned_data属性の詳細を読む:あなたはパスワード値を自分でハッシュ化すべきではないhttps://docs.djangoproject.com/en/1.9/ref/forms/api/#django.forms.Form.cleaned_data

password = form.cleaned_data['password'] 
0

。これはすでにauthenticateのことです。実際には2回ハッシュしています。

+0

clean_passwordメソッドを削除しました。平文を渡して認証します。また、私のモデルにユーザー名フィールドを追加して認証するために電子メールを使用していますが、 * – BrianCas

+0

あなたは私の更新を見ることができます、それは私のMd5ハッシュかもしれませんか? – BrianCas

+0

最初にどのようにユーザーを作成しているかを示す必要があるでしょう。 –

関連する問題