2011-09-15 11 views
1

私はDjangoにまだまだ新しく、ログインメソッドを書くつもりです。これを実行してセッションに情報を保存するための最良のロジックは何ですか?ユーザーはログインを維持できますか?セッションでDjango認証/ログインロジックを書く

が、私はこのようになります認証のためのモデルがあります。基本的に

class User(models.Model): 
    email_address = models.CharField(max_length=128) 
    password = models.CharField(max_length=128) # sha512 of password w/salt 
    password_salt = models.CharField(max_length=128) # sha512 of random number as salt 

を、私はこのようなビューのログイン方法を記述します

@ratelimit_post(minutes = 1, requests = 5, key_field = 'email_address') 
def login(request): 
    requestedUser = User.objects.get(email_address=request.POST['email_address']) 

    if requestedUser == None: 
     fail_no_user() 

    passwordHash = sha512(request.POST['password'] + requestedUser.password_salt) 

    if requestedUser.password != passwordHash: 
     fail_wrong_password() 
    else: 
     request.session['user_id'] = user.id 
     request.session['is_auth'] = True 
     success_login() 

することは、これはの安全な方法ですDjangoとのログインやセッションを処理していますか?私はまだまだ新しいものなので、これが受け入れられるアプローチかどうかはわかりません。私がここで紛失しているセキュリティとパフォーマンス上の措置はありますか?

+0

Djangoには認証モジュールが付属しています。あなたはそれを試しましたか? –

+0

私自身のモデルを使用する必要があります。それはそのように働くだろうか?彼らのモデルを使用しなければならないようです。 –

+2

あなたはそのモデルに何か間違いがありますか?私はあなたの質問は、あなたがそのモデルのユーザーのためのより多くの情報/カスタムを持ってほしいという事実から生じると思います。代わりに、Django組み込みユーザーモデルとOneToOne関係を持つUserProfileというモデルを作成できます。 –

答えて

2

あなた自身のバックエンドを作成することをお勧めします。

こちらのドキュメントを参照してください:GET_USER(USER_ID)と 認証(**資格情報):https://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend

は認証バックエンド

認証バックエンドを書くには、2つのメソッドを実装し クラスです。

+0

恐ろしい、ありがとう、私はそれを使用します。 –

0

ジャンゴhereは、公式ドキュメントで、非常にシンプルで強力な認証システムが付属しています。