您的位置:首页 > 编程语言 > Go语言

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

2017-10-16 09:58 197 查看
首先描述一下要解决的问题:两个独立的手机应用A和B,A和B需共用一个后台用户系统,但是登陆要完全分开,且同一账号同一应用同一时刻只能有一个有效的登陆。后台使用django。
举例来说用户在应用A上注册了一个user,用户可使用同样的user登陆应用B而无需再注册。如果用户在一台手机上登陆了应用A,然后用户换一台手机再次登录应用A,则原来手机的应用A会退出登录(这和微信的账户登录原理相似)。应用B有类似的登陆逻辑。但是用户登陆应用A和登陆应用B是相互独立的。也即如果用户登录了应用A,然后用户用任意手机登录应用B,原应用A的登陆不受影响。
 
解决方案:
Django提供了特别方便的用户和session管理。在这里我们为应用A和B各写了一个django的后台project。
第一步,对django的用户模块做扩展,增加域用于记录user的token。

第二步,编写自己的认证后端。
一个认证后端需要实现包含以下两个方法的一个类:
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
相关文章推荐