2012-02-09 9 views
0

私のアプリケーションは、Webサイト(同じページ)にログインする2つの方法を提供します。最初はユーザー名&パスワードであり、その他はユーザー名&緊急パスワードです。私はbackend.pyとして複数の値を返すdjango

class PersonAuthenticationBackend(object): 
    def authenticate(self, username=None, password=None): 
    try: 
     person = User.objects.get(username=username) 
     if person.check_password(password): 
     return person 
     else: 
     try: 
      db_ecode=person.get_profile().u_emergency_code 
      if password==db_ecode: 
      print "EMERGENCY LOGIN" 
      return person 
      else : 
      return None 
     except: 
      return None 
    except User.DoesNotExist: 
      pass 
    return None 

    def get_user(self, user_id): 
     try: 
      return User.objects.get(pk=user_id) 
     except User.DoesNotExist: 
      return None 

を持っています。ユーザーが緊急ログインを使用してログインしているかどうかを知るにはどうすればいいですか?

+0

"EMERGENCY LOGIN"の行が出力されていることを確認してください。 :-)どのような作業を解決しようとしていますか? – DrTyrsa

+0

質問にはコード内でそれを知る必要がありますか?あなたはすでに "緊急のログイン"の文字列を印刷するときにそれを知っています。 – akonsu

答えて

0
person.a = lambda: None 
setattr(person.a, 'login', True) 

、その後、 retriveは

print "person.a %s"%person.a.login 

を使用して、セッションに格納します。

0

これは、Pythonで、あなたは動的オブジェクトに属性を追加することができます。

if person.check_password(password): 
    person.loged_normally = True 
    return person 

if password==db_ecode: 
    print "EMERGENCY LOGIN" 
    person.loged_normally = False 
    return person 

使用すると、1つのリクエストの間が、全体セッションの間だけでなく、情報を持っているしたい場合は、それをセッションエンジンおよび/またはデータベースに保存する必要があります。

+0

これは非常に悪い考えです。このようなコードは維持してテストするのが非常に難しいです。 – DrTyrsa

+0

それは動作しませんでしたが、私にヒントを与えた。 – user1003121

0

signalを送信します。 log recordを作成します。それとも他に何かを探しているのですか?

0

いつでも後で使用できるセッションを追加できますか?

関連する問題