Django下两个projects共用一个用户系统

首先描述一下要解决的问题:两个独立的手机应用ABAB需共用一个后台用户系统,但是登陆要完全分开,且同一账号同一应用同一时刻只能有一个有效的登陆。后台使用django

举例来说用户在应用A上注册了一个user,用户可使用同样的user登陆应用B而无需再注册。如果用户在一台手机上登陆了应用A,然后用户换一台手机再次登录应用A,则原来手机的应用A会退出登录(这和微信的账户登录原理相似)。应用B有类似的登陆逻辑。但是用户登陆应用A和登陆应用B是相互独立的。也即如果用户登录了应用A,然后用户用任意手机登录应用B,原应用A的登陆不受影响。

 

解决方案:

Django提供了特别方便的用户和session管理。在这里我们为应用AB各写了一个django的后台project

第一步,对django的用户模块做扩展,增加域用于记录usertoken


第二步,编写自己的认证后端。

一个认证后端需要实现包含以下两个方法的一个类:

class B_Backend: def authenticate(self, username=None, token=None): try: _user=TestUser.objects.get(user_id=username, client_token_B=token) return _user except: return None def get_user(self, userid): try: return TestUser.objects.get(user_id=userid) except MmcUser.DoesNotExist: return None


第三步,在django settings中加入如下设置:

AUTHENTICATION_BACKENDS = ( 'APPB.models.B_Backend', )


第四步,测试看看能否能像预期那样工作吧!

你可能感兴趣的:(django,django)