如何在django中对每个应用程序的用户进行身份验证

时间:2013-09-09 03:17:33

标签: python django authentication

我在http://mydomain.com/chat/的django聊天应用 我想在侧栏中显示登录的用户

但我不希望用户登录主网站http://mydomain.com,这是不同的应用


我怎么能这样做 或者如果不可能有其他方法可以做到吗?

2 个答案:

答案 0 :(得分:1)

我正在考虑这两个应用程序都在同一个项目中,并且您正在使用相同的通用身份验证模块。 (django.contrib.auth?)

继承用户模型以创建一个新模型,例如myuser。

class MyUser(User):
 isChatUser=BooleanField(default=False)

或者,您可以使用带有选项的charField。

现在,您必须向经过身份验证并注册为聊天用户的用户显示。

def isChatUserLoggedIn(user):
 if user.is_authenticated():
  try:
   myuser = MyUser.objects.get(id=user.id)
   return (True if myuser.isChatUser else False)
  except:
   return False
#And then use the following when verifying your user-->
isChatUserLoggedIn(request.user)

我希望这很有用。

答案 1 :(得分:0)

也许不是最好的方法。但数据库路由器可以解决这个问题:https://docs.djangoproject.com/en/dev/topics/db/multi-db/。 它允许您拥有多个数据库(因此,多个身份验证系统)。并使用当前正在执行的应用程序使用不同的数据库。

作为替代方案,您可以扩展User模型以创建新列,重写auth系统以检查尝试登录的用户是否是在其相应应用程序中注册的用户。