2012-02-09 112 views
0

我的應用程序提供了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 2012-02-09 10:50:39

+0

問題是在代碼中你需要知道的地方?你已經知道當你打印「EMERGENCY LOGIN」字符串時。 – akonsu 2012-02-09 10:51:00

回答

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

然後, retrive使用

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

,然後將其存儲在會話。

0

這是蟒蛇,你可以動態地添加屬性的對象:

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

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

如果你想不僅在一個請求,但整個會話期間的信息,那麼你必須將其保存到會話引擎和/或數據庫。

+0

這是一個非常糟糕的主意。這樣的代碼很難維護和測試。 – DrTyrsa 2012-02-09 10:59:26

+0

雖然它沒有工作,但給了我提示.. thanx – user1003121 2012-02-13 04:28:30

0

您可以隨時添加一個會話,您可以稍後使用嗎?