2012-02-09 134 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

您可以随时添加一个会话,您可以稍后使用吗?